读书人

for循环中delegate的有关问题

发布时间: 2013-12-28 22:19:34 作者: rapoo

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是不同的。这个我以前说过。
[解决办法]
引用:
for (int i = 0; i < 2; i++)
{
int j = i;
Thread t = new Thread(
delegate(obj)
{
Console.WriteLine(obj);


});
t.Start(j);
}


疏忽了,确实可以通过线程传参来解决,+1

读书人网 >C#

热点推荐