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