【发布时间】:2016-06-24 05:05:28
【问题描述】:
这里发生了什么?这个循环大部分时间只是打印这个:
10101010101010101010
有时是这样的:
51010101010101010101
当我调试它时,它会按顺序打印
0123456789
class Program
{
static void Main (string[] args)
{
for ( int i = 0; i < 10; i++)
{
Task.Run(( ) => Console.Write(i));
}
Console.Read();
}
}
【问题讨论】:
-
Lambda 捕获变量,而不是值。
-
lambda 捕获了 变量,这意味着所有任务都在尝试读取相同的值。他们中的一些人读取了
5的值,而一些人读取了最后一个值10