当我用array
和Actions
添加到for loop
的delegate
时,我在阵列中更新了。如何防止这种情况发生?
我已经尝试在添加它之前将“I”分配给整数。
Action[] actions = new Action[100];
for (int i = 0;i< actions.Length; i++)
{
actions[i] = () => Console.WriteLine("Hello"+ i);
}
在Action[]
的每个行动中的“我”是100;
这是为什么?
因为它们都被分配到相同的局部变量“int i”,并且在循环结束后“i”为100
Action[] actions = new Action[100];
for (int i = 0;i< actions.Length; i++)
{
int a = i;
actions[i] = () => Console.WriteLine("Hello"+ a);
}
在声明int a = i之后,每个动作都有一个a