2010-07-02 127 views
0

可能重複:
C#: Difference between ‘ += anEvent’ and ‘ += new EventHandler(anEvent)’附加到事件處理程序

大家好,

我有兩個事件處理器。

在我的構造函數中,我爲eventhandler附加了一個函數,但是以兩種不同的方式爲兩個事件處理函數執行它。一個用新的EventHandler,另一個用指向該函數。他們似乎也這樣做?

什麼是最好的方式,爲什麼?

UPDATE:已經回答here

public partial class MyForm : Form 
{ 
    public event EventHandler Button1Clicked; 
    public event EventHandler Button2Clicked; 

    public MyForm() 
    { 
     InitializeComponent(); 

     simpleButton1.Click += new EventHandler(simpleButton1_Click); 
     simpleButton2.Click += Button2Click; 
    } 

    void simpleButton1_Click(object sender, EventArgs e) 
    { 
     if (Button1Clicked != null) 
     { 
      Button1Clicked.Invoke(sender, e); 
     } 
    } 

    void Button2Click(object sender, EventArgs e) 
    { 
     if (Button2Clicked != null) 
     { 
      Button2Clicked.Invoke(sender, e); 
     } 
    } 
} 
+2

都是一樣的。 '新的EventHandler'代碼現在是語法糖,不再需要。 – ChrisF 2010-07-02 09:28:16

回答

3

C#2介紹方法組轉換這是您的第二種形式正在使用的內容。它在內部執行完全相同的操作 - 在這兩種情況下,它都生成EventHandler的新實例。

我個人更喜歡第二種形式:它沒有那麼多的粗俗。它只是說,你有興趣。

(我還沒有發現確切的重複。儘管關閉的問題在這裏離開這個答案,因爲它做任何傷害。)

1

是的,他們這樣做。 Resharper推薦後者。

1

這兩種連接方式事件處理程序相同。在最後一種情況下(從2.0開始)框架能夠推斷類型本身。

相關問題