2009-02-15 19 views
66

區別採取以下代碼:C#: '+ = anEvent' 和 '+ =新的EventHandler(anEvent)'

private void anEvent(object sender, EventArgs e) { 
    //some code 
} 

是什麼下面之間的差異?

[object].[event] += anEvent; 

//and 

[object].[event] += new EventHandler(anEvent); 

[更新]

顯然,在這兩個之間沒有區別......前者是後者的只是語法糖。

+4

像ReSharper的一個工具會建議您刪除多餘的代碼,因爲它只是增加了噪音。 – 2009-02-15 23:34:10

回答

76

沒有區別。在你的第一個例子中,編譯器會自動推斷你想要實例化的委託。在第二個示例中,您明確定義了委託。

委託推理是在C#2.0中添加的。所以對於C#1.0項目,第二個例子是你唯一的選擇。對於2.0項目,使用推理的第一個示例是我希望在代碼庫中使用並查看的內容 - 因爲它更簡潔。

10

我不認爲有區別。編譯器將第一個轉換爲第二個。

14
[object].[event] += anEvent; 

只是語法糖 -

[object].[event] += new EventHandler(anEvent);