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 分钟前
线程池-----Executors
java·开发语言
XiYang-DING3 分钟前
【LeetCode】144. 二叉树的前序遍历
算法·leetcode·职场和发展
WolfGang0073218 分钟前
代码随想录算法训练营 Day28 | 动态规划 part01
算法·动态规划
小碗羊肉11 分钟前
【从零开始学Java | 第二十八篇】可变参数
java·开发语言
Java成神之路-12 分钟前
Spring AOP 核心进阶:切入点表达式 + 通知类型 + 环绕通知避坑指南(Spring系列8)
java·后端·spring
weitingfu22 分钟前
Excel VBA 入门到精通(二):变量、数据类型与运算符
java·大数据·开发语言·学习·microsoft·excel·vba
光电笑映24 分钟前
STL 源码解密:unordered 系列容器的底层复用与哈希策略
算法·哈希算法·散列表
foundbug99932 分钟前
无人机离散系统模型预测控制(MPC)MATLAB实现
开发语言·matlab·无人机
6Hzlia36 分钟前
【Hot 100 刷题计划】 LeetCode 215. 数组中的第K个最大元素 | C++ 快速选择与堆排序题解
c++·算法·leetcode
小白菜又菜36 分钟前
Leetcode 3070. Count Submatrices with Top-Left Element and Sum Less Than k
算法·leetcode·职场和发展