for循环中delegate的有关问题
for循环中delegate的问题本帖最后由 vphoenix 于 2013-12-23 14:28:43 编辑for (int i 0 i 2 i++){T
for循环中delegate的问题
本帖最后由 vphoenix 于 2013-12-23 14:28:43 编辑
for (int i = 0; i < 2; i++)
{
Thread t = new Thread(
delegate()
{
Console.WriteLine(i);
});
t.Start();
}
为什么这段代码的执行结果是:
2
2
谁能解释一下原因?
如果要让它打印(顺序可以无视)
0
1
该怎么修改?
[解决办法] for (int i = 0; i < 2; i++)
{
int j = i;
Thread t = new Thread(
delegate(obj)
{
Console.WriteLine(obj);
});
t.Start(j);
}
[解决办法]C# 4.0和4.5是不同的。这个我以前说过。
[解决办法]疏忽了,确实可以通过线程传参来解决,+1