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); 
}
相关推荐
o***59271 分钟前
Spring 过滤器:OncePerRequestFilter 应用详解
java·后端·spring
稚辉君.MCA_P8_Java5 分钟前
Gemini永久会员 三个线程(A、B、C)交替执行
java·后端·架构
lijiatu100868 分钟前
C++ 类成员变量声明语法错误
java·开发语言·c++
zore_c10 分钟前
【C语言】带你层层深入指针——指针详解2
c语言·开发语言·c++·经验分享·笔记
Monly2116 分钟前
Java八股文:Redis篇
java·开发语言·redis
爱学习的程序媛23 分钟前
《JavaScript权威指南》核心知识点梳理
开发语言·前端·javascript·ecmascript
帮帮志27 分钟前
【AI大模型对话】流式输出和非流式输出的定义和区别
开发语言·人工智能·python·大模型·anaconda
陈奕昆27 分钟前
n8n实战营Day1课时2:核心概念拆解+天气提醒工作流实操
开发语言·人工智能·n8n
L***p31330 分钟前
Spring Boot 经典九设计模式全览
java·spring boot·设计模式
zmzb010330 分钟前
C++课后习题训练记录Day39
数据结构·c++·算法