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); 
}
相关推荐
wyu729611 分钟前
Spring框架学习笔记:从IoC到声明式事务
java
沐知全栈开发5 分钟前
CSS Text(文本)
开发语言
会编程的土豆8 分钟前
【日常做题】 代码随想录(岛屿最大面积+寻宝)
数据结构·算法·图论
前进吧-程序员10 分钟前
现代 C++ 异步编程:从零实现一个高性能 ThreadPool (C++20 深度实践)
开发语言·c++·c++20
qqacj13 分钟前
Spring Security 官网文档学习
java·学习·spring
阿洛学长14 分钟前
汉洛塔结构思维
算法
木子n121 分钟前
第2篇:坐标变换与数学基础:FOC算法的核心数学工具
算法·电机控制·foc
Rsun0455123 分钟前
10、Java 桥接模式从入门到实战
java·开发语言·桥接模式
金銀銅鐵25 分钟前
[Java] 从 class 文件看 cglib 对 MethodInterceptor 的处理 (下)
java·后端
lee_curry28 分钟前
Java中关于“锁”的那些事
java·线程·并发·juc