当前位置: 首页 > news >正文

C#练习题——Lambad表达式的应用

一、任务

(1)有一个函数,会返回一个委托函数

(2)这个委托函数中只有一句打印代码
(3)之后执行返回的委托函数时,可以打印出1~10


二、重点知识点讲解

1. 闭包陷阱与解决方案

问题:直接捕获循环变量 i

// ❌ 错误写法:所有委托都捕获同一个i的引用
a += () => { Console.WriteLine(i); };
// 输出结果:11, 11, 11... (全部是最终值)

解决方案:创建局部副本

// ✅ 正确写法:每个委托捕获独立的index
int index = i;  // 每次循环创建新变量
a += () => { Console.WriteLine(index); };
// 输出结果:1, 2, 3...10 (正确的序列值)

2. 委托链构建

Action a = null;
a += () => { /* 方法1 */ };
a += () => { /* 方法2 */ };
// 📌 a现在包含两个方法,按添加顺序执行

3. 执行方式

PrintNum()();  // 双括号语法
// 第一个(): 调用方法,返回委托
// 第二个(): 执行返回的委托链

三、完整代码

using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;namespace 进阶测试
{class Program{public static Action PrintNum(){Action a = null;for (int i = 1;i<11;i++){int index = i;a +=() =>{Console.WriteLine(index);};}return a;}static void Main(string[] args){PrintNum()();}}
}

http://www.dtcms.com/a/403634.html

相关文章:

  • Polar WEB(1-20)
  • 湖州做网站公司哪家好温州市网站制作公司
  • NW973NW976美光固态闪存NW982NW987
  • 软件测试 - 接口测试(中篇)
  • 项目进不了index.php,访问public下的html文件可以进去
  • 得力D31系列M2500 M3100 ADNW激光打印机维修手册
  • 信誉好的东莞网站推广从网站验证码谈用户体验
  • Spring Boot中Bean Validation的groups属性深度解析
  • Linux进程(2)
  • C++:String类
  • 金华网站开发杭州自适应网站建设
  • ROS (无人机、机器人)与外部系统对接
  • 苏州市吴江住房和城乡建设局网站书籍网站设计
  • Pytorch工具箱2
  • 物业网站开发wordpress英文博客模板下载
  • 光影(1)
  • iOS 混淆与机器学习模型保护 在移动端保密权重与推理逻辑的实战指南(iOS 混淆、模型加密、ipa 加固)
  • Axios的快速入门
  • 网站建设品牌公司排名网页游戏4399在线游戏
  • 木渎建设局网站哪个网站可以做加工代理的
  • 培训班小程序模板如何一键套用,分享微信小程序的制作方法
  • 陕西做天然气公司网站网站如何做的有特色
  • 娱乐网站的代理怎么做WordPress 短码转换
  • Unity - Spine
  • Spring依赖注入方式
  • 宏升温岭网站建设扁平化网站源码
  • 网站页面架构图网站定制开发 广州
  • 做html网站搜索框代码网站关键词如何做优化
  • Java 中配置 Selenium UI 自动化测试 并生成 Cucumber 报告
  • SAP中BAPI_MATERIAL_SAVEDATA分析和使用