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); 
}
相关推荐
福楠几秒前
现代C++ | C++14甜点特性
linux·c语言·开发语言·c++
WBluuue1 分钟前
Codeforces Educational 188(ABCDEF)
c++·算法
charlie1145141913 分钟前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(4)从零构建 STM32 构建系统
linux·开发语言·c++·stm32·单片机·学习·嵌入式
AI成长日志6 分钟前
【笔面试算法学习专栏】双指针专题:简单难度三题精讲(167.两数之和II、283.移动零、344.反转字符串)
学习·算法·面试
钰fly6 分钟前
Halcon联合编程适应图像的方法(picture)
开发语言·前端·javascript
束尘8 分钟前
Vue3一键复制图片到剪贴板
开发语言·javascript·vue.js
Book思议-10 分钟前
【数据结构】数组与特殊矩阵
数据结构·算法·矩阵
老王熬夜敲代码14 分钟前
LangGraph的状态
开发语言·langchain
2401_8274999914 分钟前
python核心语法03-数据存储容器
开发语言·python
AC赳赳老秦15 分钟前
自媒体博主:OpenClaw多Agent协同,实现选题-创作-审核全流程自动化
运维·服务器·开发语言·人工智能·自动化·媒体·openclaw