代码段1的输出结果不规则,大都>45 代码段2的输出和预期的一样,1-49全部输出 原因是两断代码i对于循环体都是全局变量,而外层的for循环运行很快,内层需要创建任务,当内层开始执行第一个任务的时候,外层for循环已经快结束或已经结束,所以代码段1的输出结果不规则 代码段2每次进行循环都会创建在新的作用域中创建一个新的临时变量,执行每个task的时候都会找对应作用域中的临时变量
代码段
1:
for (int i
= 0; i
< 50; i
++)
{
Task
.Run(() =>
{
Console
.WriteLine(i
);
});
}
代码段
2:
for (int i
= 0; i
< 50; i
++)
{
int k
= i
;
Task
.Run(() =>
{
Console
.WriteLine(k
);输出
1-49
});
}
转载请注明原文地址:https://ipadbbs.8miu.com/read-4100.html