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); 
}
相关推荐
wno7044 分钟前
Spring Security短信验证码登录
java·python·spring
泡泡鱼(敲代码中)7 分钟前
Python 容器类型学习笔记:列表、元组、字典、集合
开发语言·笔记·python·pycharm
步行cgn11 分钟前
Spring util 命名空间详解
java·后端·spring
2501_9336707916 分钟前
平台招商运营校招能力模型:数据分析、SQL与增长场景拆解
开发语言
古法安卓36 分钟前
Android-休眠唤醒后onLocationChanged没有数据问题排查
android·java·android studio
怕浪猫1 小时前
从 Windows 换到 Mac 三个月,我真香了
算法·面试·架构
菜鸟~noob2331 小时前
【Bonjour】华为Peerium架构深度解析:从冯·诺依曼到百万处理器“一台计算机”,附MATLAB性能仿真【含matlab代码,可直接运行】
开发语言·matlab·华为·peerium
周GZ1 小时前
简单讲解线程池的4种拒绝策略
java
白远山1 小时前
24小时自助健身房系统开发实战:从需求分析到完整指南
java·开发语言·数据库·数据挖掘·需求分析
暮雨哀尘1 小时前
JAVA基础练习(四):SpringBoot 实现简易登录功能
java·spring boot·eclipse·maven