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); 
}
相关推荐
这不小天嘛4 分钟前
JAVA八股——redis篇
java·开发语言·redis
Jerry1 小时前
LeetCode 1002. 查找共用字符
算法
无限的鲜花1 小时前
协程本质是函数加状态机——零基础深入浅出 C++20 协程
c++·算法·c++20
逝水无殇1 小时前
C# 字符串(String)详解
开发语言·后端·c#
精明的身影1 小时前
C++自学之路1:Hello world
开发语言·c++
旖-旎2 小时前
《LeetCode 64 最小路径和 || LeetCode 174 地下城游戏》
c++·算法·leetcode·动态规划
森林古猿12 小时前
再论斜率优化
c++·学习·算法
leo__5202 小时前
基于导航数据的扩展卡尔曼滤波(EKF)MATLAB 实现
开发语言·matlab
万法若空2 小时前
【数学-简单数论】同余中的逆
线性代数·算法
gugucoding2 小时前
25. 【C语言】二进制文件与随机读写
c语言·开发语言