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); 
}
相关推荐
Tisfy几秒前
LeetCode 3644.排序排列:不对则与(脑筋急转弯)
数据结构·算法·leetcode·题解·位运算
外收内放11 分钟前
FastAPI猜字谜实战(3):把每一局存成JSON
开发语言·python·学习·json·fastapi
denlaku11 分钟前
JDK 20 新特性详解
java
tedcloud12313 分钟前
Docker Compose 部署 Memos:从安装到备份恢复
linux·开发语言·jvm·后端·docker·容器·rust
镜子AI14 分钟前
镜子AI案例工程复盘:用Python给GEO效果做抽样检测与置信区间估计
开发语言·人工智能·python
木井巳17 分钟前
【JavaEE】SpringBoot 统一功能处理: 拦截器、统一返回与全局异常
java·spring boot·后端·spring·java-ee
春涧草茶19 分钟前
慢就是快15-1 多进程 多线程
开发语言·python
pan_junbiao19 分钟前
Go语言中的空白标识符
开发语言·后端·golang
SL-staff20 分钟前
JVS-Rules金融风控实践:四大原生能力的技术实现与可落地配置指南
java·决策树·规则引擎·函数计算·金融风控·jvs-rules·数据源抽象
卡卡~~26 分钟前
C++学习
开发语言·c++