2016-08-24 32 views

回答

2

這是兩個不同的東西

event聲明事件:

https://msdn.microsoft.com/en-us/library/8627sbea.aspx

EventHandler定義的事件將提高方法:

https://msdn.microsoft.com/en-us/library/system.eventhandler(v=vs.110).aspx

EventHandler<TEventArgs>是您的自定義EventArgs一個方便的包裝:

https://msdn.microsoft.com/en-us/library/db0etb8x(v=vs.110).aspx

不同的方式來訂閱事件

using System; 

namespace ConsoleApplication3 
{ 
    internal class Program 
    { 
     private static void Main(string[] args) 
     { 
      // using a method 
      MyEvent += Program_MyEvent; 

      // using EventHandler, possible but not mandatory 
      MyEvent += new EventHandler(Target); 

      // using lambda syntax 
      MyEvent += (sender, eventArgs) => { }; 

      // using delegate 
      MyEvent += delegate (object sender, EventArgs eventArgs) { }; 

      // using delegate, signature is optional actually 
      MyEvent += delegate { }; 
     } 

     private static void Target(object sender, EventArgs eventArgs) 
     { 
     } 

     private static void Program_MyEvent(object sender, EventArgs e) 
     { 
     } 

     public static event EventHandler MyEvent; 
    } 

} 
+0

那麼,有沒有做+ =事件處理程序和+ =方法之間的diffrence? – Spaghetti

+0

不,你可以,但沒有必要,看我更新的答案。 – Aybe

+1

@Spaghetti - 不,這個答案中的五個「+ =」樣式中的每一個都做了完全相同的事情 - 它們將一個委託實例附加到該事件。 – Enigmativity

相關問題