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); 
}
相关推荐
OidEncoder6 分钟前
编码器分辨率与机械精度的关系
人工智能·算法·机器人·自动化
それども9 分钟前
Comparator.comparing 和 拆箱问题
java·jvm
froginwe1114 分钟前
C 语言测验
开发语言
memcpy017 分钟前
LeetCode 2615. 等值距离和【相同元素分组+前缀和;考虑距离和的增量】中等
算法·leetcode·职场和发展
今夕资源网33 分钟前
powershell工具包 安装升级脚本并设置UTF-8 环境快捷方式创建 将powershell的编码默认改为UTF-8
开发语言·utf-8·powershell·utf-8编码·powershell7·powershell5·设置utf-8编码
炽烈小老头38 分钟前
【 每天学习一点算法 2026/04/22】四数相加 II
学习·算法
星晨羽1 小时前
西门子机床opc ua协议实现变量读写及NC文件上传下载
java·spring boot
alphaTao1 小时前
LeetCode 每日一题 2026/4/20-2026/4/26
算法·leetcode·职场和发展
机器视觉知识推荐、就业指导1 小时前
Qt:真正的门槛不是入门,而是维护
开发语言·qt
hhb_6181 小时前
Dylan 语言核心特性与工程实践深度解析
开发语言·c#