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); 
}
相关推荐
Nil2083 分钟前
leetcode 24两两交换链表中的节点
算法·leetcode·链表
曹牧4 分钟前
C#:函数参数指定默认值
开发语言·c#
.格子衫.14 分钟前
033动态规划之状态压缩DP——算法备赛
算法·动态规划
ysa05103023 分钟前
c++常用自带函数用法与注意
c++·笔记·算法
AAA@峥41 分钟前
Python 基础开篇:认识 Python、版本选择、环境部署与首个 HelloWorld
开发语言·python
caimouse1 小时前
ReactOS 图形系统分析(47):GDI 批处理 — gdibatch.c
c语言·开发语言
qq21084629531 小时前
在python中什么是 self 和 cls?
开发语言·前端·python
杨充2 小时前
05.多用组合和少继承
开发语言·bash
带多刺的玫瑰2 小时前
Leecode#4刷题之寻找两个正序数组的中位数
java·前端·算法