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); 
}
相关推荐
洛阳泰山1 分钟前
我用 Java 21 虚拟线程重写了一个 RAG 平台:从架构设计到踩坑实录
java·人工智能·后端
setmoon2143 分钟前
多协议网络库设计
开发语言·c++·算法
永远睡不够的入4 分钟前
C++继承详解
java·c++·redis
lsx2024064 分钟前
JavaScript 字符串模板
开发语言
Sylvia-girl6 分钟前
删除有序数组中的重复项
数据结构·算法
2501_908329856 分钟前
嵌入式LinuxC++开发
开发语言·c++·算法
兑生6 分钟前
【灵神题单·贪心】1833. 雪糕的最大数量 | 排序贪心 | Java
java·开发语言
实在智能RPA6 分钟前
实在 Agent 支持哪些企业业务场景的自动化?全行业智能自动化场景深度拆解
java·运维·自动化
Storynone6 分钟前
【Day30】卡码网:46. 携带研究材料,LeetCode:416. 分割等和子集
python·算法·leetcode
左左右右左右摇晃8 分钟前
Java并发——偏向锁
java