delegate void Add(int x,int y); 
 
System.Threading.Thread t1 = new System.Threading.Thread(delegate() 
            { 
                System.Console.WriteLine("SUM"); 
            
            }); 
线程里面的参数该是方法吧,上面的如何解释呢?

解决方案 »

  1.   

    好奇怪哎 
    看System.Threading.Thread的构造函数,第一个参数都是委托类型,而不是 void() target ,如果直接用匿名函数的话 应该有编译错误:
    无法将 匿名方法 转换为类型“System.Delegate”,因为它不是委托类型但是这一个居然直接通过了
    以前没注意过,都是
    System.Threading.Thread t1 = System.Threading.Thread(new System.Threading.ThreadStart(delegate(){}));
    这样
      

  2.   

    哦 估计是这样
    匿名方法实际上是一个“委托常量”,但是它并不从Delegate派生,即不能提升转换成Delegate
    需要Delegate参数的方法不能直接用匿名方法,但是使用其它委托类型作为参数的方法都可以直接用符合委托格式的匿名方法作为实参