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); 
}
相关推荐
fīɡЙtīиɡ ℡7 分钟前
布隆过滤器
java
yaoxin52112327 分钟前
462. Java 反射 - 获取声明类与封闭类
java·开发语言·python
阿里嘎多学长1 小时前
2026-07-14 GitHub 热点项目精选
开发语言·程序员·github·代码托管
charlie1145141912 小时前
Cinux: 为大内核铺路
开发语言·c++·操作系统·现代c++
2501_914245932 小时前
C语言设计模式详解:从理论到实践的完整指南
c语言·开发语言·设计模式
Hazenix2 小时前
Go 指南:一篇文章速通 Golang
开发语言·后端·golang
灯澜忆梦2 小时前
GO_复合类型---指针
开发语言·后端·golang
Ulyanov2 小时前
雷达导引头Python仿真框架:GPU加速、6-DOF模型与半实物仿真接口
开发语言·python·雷达信号处理·雷达导引头
wuqingshun3141593 小时前
MYSQL的乐观锁和悲观锁是什么?
java
Jerry3 小时前
LeetCode 101. 对称二叉树
算法