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);
}