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); 
}
相关推荐
程序员皮皮林几秒前
Dubbo 的 SPI 和 JDK 的 SPI 有什么区别?
java·开发语言·dubbo
小锋java1234几秒前
10分钟学会Java16新特性record
java
是多巴胺不是尼古丁3 分钟前
java‘期末复习--多态
java·开发语言
瑞雪兆丰年兮6 分钟前
[从0开始学Java|第二十五天]项目阶段(综合练习&斗地主小游戏)
java·windows
勤自省10 分钟前
吴恩达机器学习课程实验:线性回归模型入门(课后实验)
人工智能·算法·机器学习·回归·线性回归
ChillCoding15 分钟前
更新中:C++ STL库,查找排序(基础算法),数据结构,数学算法,竞赛相关基础
数据结构·c++·算法
abcy07121316 分钟前
sqlalchemy 原生sql判断条件是否为空,为空则跳过
开发语言·python
智者知已应修善业20 分钟前
【51单片机使用IO组赋值方法实现无源蜂鸣器响时LED12亮不响时34亮】2024-3-7
c++·经验分享·笔记·算法·51单片机
.千余22 分钟前
【C++】深挖STL list底层:解迭代器与节点存储逻辑
开发语言·c++·笔记·学习·其他
Demon1_Coder23 分钟前
Day4-微服务-Seata默认事务
java·数据库·微服务