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); 
}
相关推荐
白云如幻几秒前
【JDBC】集合、反射和泛型复习-3
java·开发语言·jdbc
笨笨马甲4 分钟前
Qt 实现三维坐标系的方法
开发语言·qt
罗湖老棍子5 分钟前
【例 2】数星星 Stars(信息学奥赛一本通- P1536)
数据结构·算法·树状数组·单点修改 区间查询
逆境不可逃12 分钟前
LeetCode 热题 100 之 394. 字符串解码 739. 每日温度 84. 柱状图中的最大矩形
算法·leetcode·职场和发展
bugcome_com13 分钟前
C# 高级集合使用示例
开发语言·c#
sycmancia18 分钟前
C++——动态内存分配、关于虚函数、关于继承中的强制类型转换
开发语言·c++
Mao_Hui19 分钟前
Unity3d实时读取Modbus RTU数据
开发语言·嵌入式硬件·unity·c#
echome88820 分钟前
Python 装饰器详解:从入门到精通的实用指南
开发语言·python
重生之后端学习25 分钟前
62. 不同路径
开发语言·数据结构·算法·leetcode·职场和发展·深度优先
小资同学28 分钟前
考研机试 -Kruskal算法
算法