delegate void Thread();
void A()
{
Thread t = delegate ()
 {
  ...
 };
}和void A()
{
Thread t = new Thread(delegate ()
 {
  ...
 });
}加new 和不加new有什么区别呀

解决方案 »

  1.   

    楼主你概念可能搞错了,delegate void Thread();这样 你定义了一个叫做Thread的委托,覆盖了System.Threading.Thread这个类
    所以你这样名命,是错误的。你的这些困惑 也许正源于此,不能这么命名。如果这样那么这个Thread就不是线程类,而只是你定义的这个委托了,这和其它任何委托没什么不一样。
      

  2.   

    不好意思 看错了 第一个是你自定义的委托Thread;
    第二个是系统的类吧
      

  3.   

    delegate void Aaa(); 
    void A() 

    Aaat = delegate () 

    ... 
    }; 
    } 和 
    delegate void Aaa(); 
    void A() 

    Aaat = new Aaa(delegate () 

    ... 
    }); 
    } 加new 和不加new有什么区别呀
      

  4.   

    代码没对应该是 Aaa aaa=new Aaa(()=>{});
    or
    Aaa aaa=delegate{};这两种方式 都是 为一个委托实例赋值,赋值一个匿名方法
    所以加new和不加new是一至的 在IL代码级别应该是一致的,我觉得(不知对不对)
      

  5.   

    Aaat = delegate () 

    ... 
    }; 
    匿名方法  
    赋值给委托变量 跟 new Aaat(delegate () {})是一样的