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); 
}
相关推荐
YGGP2 分钟前
【Golang】LeetCode 31. 下一个排列
算法·leetcode
小猪咪piggy3 分钟前
【算法】leetcode100 堆、栈
算法
Lin_Miao_094 分钟前
基于 DataX + DataX-Web 生成报表数据
java·数据库
MarkHD5 分钟前
智能体在车联网中的应用:第12天 CARLA实战:编写Python客户端生成与控制车辆,迈向联合仿真
开发语言·python
沉迷技术逻辑5 分钟前
微服务架构-网关
java·微服务·架构
青出于兰5 分钟前
C语言| 指针变量的自增运算
c语言·开发语言
元亓亓亓6 分钟前
LeetCode热题100--70. 爬楼梯--简单
算法·leetcode·职场和发展
xqqxqxxq7 分钟前
Java 集合框架核心用法与实战技术笔记
java·笔记·python
一起养小猫9 分钟前
LeetCode100天Day3-判断子序列与汇总区间
java·数据结构·算法·leetcode
有味道的男人9 分钟前
Python 爬虫框架设计:类封装与工程化实践
开发语言·爬虫·python