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); 
}
相关推荐
lang2015092817 小时前
Java SAX 流式解析全解:从原理到 EasyExcel 实战
java·前端·javascript
艾莉丝努力练剑17 小时前
【Linux网络】五种IO模型与非阻塞IO
linux·运维·服务器·开发语言·网络·tcp/ip
lihao lihao17 小时前
Linux线程同步与互斥
linux·数据结构·算法
Dylan的码园17 小时前
python基础与快速入门
开发语言·python
石榴树下的七彩鱼17 小时前
图片去文字接口,支持去除图片中的文字(附 Python / Java / PHP / JS 示例)
java·python·php·api接口·图片去水印·ai图片修复·图片去文字
zzz_236817 小时前
【Java基础】HashMap——为什么JDK 7扩容会死循环,JDK 8又是怎么修好的
java·开发语言
程序猿乐锅17 小时前
JavaSE 总复习:语法到多线程全梳理
java·开发语言
Sam092717 小时前
1 个 Java 服务可以支撑多少 SSE 连接:从线程模型到容量评估
java·人工智能·ai
云器科技17 小时前
云器技术问答 Vol.2:揭秘通用增量计算
java·开发语言
枫叶v.17 小时前
Agent 开发架构:从增强型 LLM 到可运维的自治系统
开发语言·python