Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# c闭包lambda_C#_Lambda - Fatal编程技术网

C# c闭包lambda

C# c闭包lambda,c#,lambda,C#,Lambda,有人能解释一下下面的代码是怎么回事吗?为什么什么都没印出来 var actions = new Action[100]; for(int i=0;i<100;i++) { actions[i] = () => DoSomething(i); } foreach(var action in actions) { action(); } void DoSomething(int i) { if(i % 9 == 0) Console.Write

有人能解释一下下面的代码是怎么回事吗?为什么什么都没印出来

var actions = new Action[100];
for(int i=0;i<100;i++)
{
    actions[i] = () => DoSomething(i);
}

foreach(var action in actions)
{
    action();
}

void DoSomething(int i)
{
    if(i % 9 == 0)
        Console.WriteLine("{0} is a multiple of 9",i);
}
经典闭包和捕获变量问题。将循环更改为

 for(int i=0;i<100;i++)
 {
     int j = i;
     actions[i] = () => DoSomething(j);
 }
有关更多信息:

经典闭包和捕获变量问题。将循环更改为

 for(int i=0;i<100;i++)
 {
     int j = i;
     actions[i] = () => DoSomething(j);
 }
有关更多信息: