首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

for循环中delegate的有关问题

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


                                    });                                    
                t.Start(j);
            }


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

热点排行