c# 循环内使用匿名函数关联变量的问题

cs 复制代码
for (int i = 0; i < dict.Count; i++) 
{ 
    Action action = () => Test(i, true); 
}

由于闭包(closures)的行为,循环内使用匿名函数关联变量i会导致问题。运行此循环后,所有action将使用的是限定范围内i的最终值,而非每次迭代时的值。

要解决此问题,可以在每次迭代中引入新的局部变量,下面是示例:

cs 复制代码
for (int i = 0; i < dict.Count; i++) 
{ 
    var j = i;
    Action action = () => Test(j, true); 
}
相关推荐
2501_938773993 分钟前
从字节码生成看 Lua VM 前端与后端协同:编译器与执行器衔接逻辑
开发语言·前端·lua
青云交3 分钟前
Java 大视界 -- Java 大数据机器学习模型在遥感图像土地利用分类中的优化与应用
java·机器学习·分布式计算·数据预处理·遥感图像·模型融合·土地利用分类
huangql5205 分钟前
Nginx 从零到精通 - 最详细的循序渐进教程
开发语言·网络·nginx
=>>漫反射=>>21 分钟前
【Spring Boot Starter 设计思考:分离模式是否适用于所有场景】
java·spring boot·后端·设计规范·自动装配
xlq2232223 分钟前
10.string(上)
开发语言·c++
Jack电子实验室25 分钟前
深入理解C语言函数指针:从基础到实战应用
java·c语言·算法
合作小小程序员小小店33 分钟前
舆情,情感微博系统demo,基于python+qt+nlp,开发语言python,界面库qt,无数据库版,数据来自第三方网站获取,
开发语言·pytorch·qt·自然语言处理·nlp
hashiqimiya38 分钟前
c++的头文件使用
开发语言·c++·算法
小马哥编程40 分钟前
【软考架构】案例分析-系统设计与建模:数据流图DFD与数据字典
java·数据库·架构·统一建模语言
sibylyue40 分钟前
Spring编程式事务和声明式事务
java·数据库·mysql