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); 
}
相关推荐
努力学算法的蒟蒻12 分钟前
day26(12.6)——leetcode面试经典150
算法·leetcode·面试
froginwe1115 分钟前
NumPy 数组属性
开发语言
ChinaRainbowSea16 分钟前
Spring Boot3 + JDK21 的迁移 超详细步骤
java·spring boot·后端·spring
代码游侠17 分钟前
数据结构——哈希表
数据结构·笔记·学习·算法·哈希算法·散列表
ULTRA??21 分钟前
moonbit关于模式匹配中的变量绑定
开发语言·c++·人工智能
FY_201826 分钟前
Stable Baselines3中调度函数转换器get_schedule_fn 函数
开发语言·人工智能·python·算法
從南走到北27 分钟前
JAVA海外短剧国际版源码支持H5+Android+IOS
android·java·ios
CoderYanger34 分钟前
动态规划算法-子数组、子串系列(数组中连续的一段):26.环绕字符串中唯一的子字符串
java·算法·leetcode·动态规划·1024程序员节
JienDa35 分钟前
JienDa聊PHP:乡镇外卖跑腿小程序开发实战:基于PHP的乡镇同城O2O系统开发
开发语言·php
霸王大陆37 分钟前
《零基础学 PHP:从入门到实战》模块十:从应用到精通——掌握PHP进阶技术与现代化开发实战-1
android·开发语言·php