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); 
}
相关推荐
非情剑2 分钟前
Java-Executor线程池配置-案例2
android·java·开发语言
小张快跑。4 分钟前
【Java企业级开发】(十)SpringBoot框架+项目实践
java·数据库·spring boot
夏小花花5 分钟前
<editor> 组件设置样式不生效问题
java·前端·vue.js·xss
weixin_307779136 分钟前
Jenkins Ioncions API 插件:现代化图标库在持续集成中的应用
java·运维·开发语言·前端·jenkins
兔子零10247 分钟前
零硬件交互:如何用纯前端把摄像头变成 4000 个粒子的魔法棒?
前端·算法
AnAnCode8 分钟前
【时间轮算法】时间轮算法的详细讲解,从基本原理到 Java 中的具体实现
java·开发语言·算法·时间轮算法
Java天梯之路8 分钟前
Spring IOC 核心源码解析
java·spring·源码
sin_hielo8 分钟前
leetcode 3432
数据结构·算法·leetcode
JIngJaneIL11 分钟前
基于Java二手交易管理系统(源码+数据库+文档)
java·开发语言·数据库·vue.js·spring boot