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); 
}
相关推荐
元亓亓亓1 分钟前
LeetCode热题100--5. 最长回文子串--中等
linux·算法·leetcode
月明长歌1 分钟前
Java多线程线程池ThreadPoolExecutor理解总结:6 个核心参数 + 4 种拒绝策略(附完整示例)
java·开发语言
找不到、了1 分钟前
JVM 跨代引用与 Card Table 机制
java·jvm
sunywz4 分钟前
【JVM】(2)java类加载机制
java·jvm·python
千金裘换酒5 分钟前
LeetCode 环形链表+升级版环形链表
算法·leetcode·链表
小鸡吃米…5 分钟前
机器学习中的随机森林算法
算法·随机森林·机器学习
学编程的小鬼8 分钟前
JVM 常见的问题
开发语言·jvm
进阶小白猿9 分钟前
Java技术八股学习Day13
java·jvm·学习
故事不长丨10 分钟前
C#File文件操作全解析:从基础用法到异常处理
服务器·开发语言·visualstudio·c#·文件操作·io流·file
lowhot15 分钟前
C语言UI框架
c语言·开发语言·笔记·ui