2011-02-25 71 views

回答

6

是,之前的.NET 2您必須手動指定:

ABC.eventX+=new X(someMethod); 

但它現在有了這個語法隱式創建:

ABC.eventX+=someMethod; 
+0

你不妨提一提,這就是所謂的*方法組轉換*,萬一OP想要了解更多信息。 – 2011-02-25 07:57:20

0

是的,它會自動創建。

例如:


namespace ConsoleApplication5 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      (new Program()).Entrance(); 
     } 

     public void Entrance() 
     { 
      ABC a = new ABC(); 
      a.eventX += callback; 
     } 

     protected bool callback(int a) 
     { 
      return true; 
     } 
    } 

    class ABC 
    { 
     public delegate bool X(int a); 
     public event X eventX; 
    } 
} 

程序類將是這個,如果你在反射鏡看到:


internal class Program 
{ 
    // Methods 
    protected bool callback(int a) 
    { 
     return true; 
    } 

    public void Entrance() 
    { 
     ABC a = new ABC(); 
     a.eventX += new ABC.X(this.callback); 
    } 

    private static void Main(string[] args) 
    { 
     new Program().Entrance(); 
    } 
}