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); 
}
相关推荐
OPEN-F2 分钟前
C++进阶教程:文件流与字符串流
开发语言·c++·算法
2601_966949656 分钟前
9:25-9:30 如何获取 A 股开盘基准价?QuantDash Python SDK 实战初始化量化策略状态
开发语言·人工智能·python·量化·quantdash·量化数据源
2601_962189607 分钟前
【SpringCloud】Gateway
java·spring cloud·gateway
夜郎king9 分钟前
基于Java的高德地图公交路线检索服务集成实践
java·智慧城市·高德地图api·县域交通智能化
Java小白笔记9 分钟前
Java中fixedDealy和fixedRate的区别是什么?
java·开发语言
@兽血沸腾14 分钟前
Thread线程和synchronized锁
java·开发语言
Android打工人18 分钟前
c++ 、java 融为一体2,c++ 实例化Android虚拟机直接运行java,c,java 一个进程号
android·java·c++
维克兜率天22 分钟前
4.1.3 策略类型全景图:六大策略,你适合哪个
笔记·python·算法·量化
jimy124 分钟前
std::move(a)本质是把a转换成右值引用类型
开发语言·c++
2601_9620566024 分钟前
Spring Boot——日志介绍和配置
java·数据库·spring boot