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); 
}
相关推荐
此生决int12 小时前
深入理解C++系列(02)——类和对象(上)
开发语言·c++
atunet12 小时前
关于从哈希冲突看缓存设计的实践与权衡7
算法
咖啡八杯12 小时前
文法、BNF与AST
java·设计模式·解释器模式·ast·文法
要开心吖ZSH14 小时前
一文搞懂:JDK 21 虚拟线程 vs N种异步方案,到底该怎么选?
java·数据库·jdk·虚拟线程
-银雾鸢尾-17 小时前
C#中的拓展方法
开发语言·c#
guodingdingh19 小时前
软件开发工作问题总结0718
java·开发语言·数据库
咖啡八杯21 小时前
GoF设计模式——解释器模式
java·后端·spring·设计模式
GuWenyue21 小时前
传统Agent工具两大痛点!300行代码落地MCP跨语言工具,彻底解耦LLM与工具
前端·人工智能·算法
优橙教育21 小时前
5G网优培训 vs Java开发:转行选哪个?
java·开发语言·5g
糖果店的幽灵21 小时前
【DeepAgents 从入门到精通】Context Management 上下文管理
java·人工智能·后端·spring·中间件·langgraph·deepagents