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); 
}
相关推荐
寒秋花开曾相惜8 分钟前
(学习笔记)4.1 Y86-64指令集体系结构(4.1.4 Y86-64异常&4.1.5 Y86-64程序)
开发语言·jvm·数据结构·笔记·学习
落魄江湖行9 分钟前
基础篇一 Java 有了 int 为什么还要 Integer?它们到底差在哪?
java·面试·八股文
码界筑梦坊1 小时前
302-基于Python的安卓应用市场数据可视化分析推荐系统
开发语言·python·信息可视化·毕业设计·fastapi
LiLiYuan.1 小时前
【Java 6种线程状态】
java·开发语言
加号32 小时前
【C#】 WebAPI 接口设计与实现指南
开发语言·c#
foundbug9992 小时前
基于混合整数规划的电池容量优化 - MATLAB实现
数据结构·算法·matlab
lly2024062 小时前
jQuery 删除元素详解
开发语言
itzixiao2 小时前
L1-047 装睡 (5分)[java][python]
java·开发语言·python
林恒smileZAZ2 小时前
Three.js实现更真实的3D地球[特殊字符]动态昼夜交替
开发语言·javascript·3d
用户298698530142 小时前
不用无头浏览器,Java 如何将 HTML 转成图片?
java·后端