2011-05-05 39 views
2

在VisualStudio 2008和2010中,當我輸入時,例如爲什麼「新的EventHandler(Handler)」在.Net中?

this.Activated += 

,然後按Tab,VisualStudio中自動補充了一行:

this.Activated += new EventHandler(MainWindow_Activated); 

但更簡單,更簡潔的版本也工作:

​​

難道這些線路相同呢? new EventHandler可能是有原因的...

+0

此問題可能已被問及已回答。我搜查了並沒有成功。 – 2011-05-05 00:23:41

+1

你不需要第二種方式的「新」,也可以。事實上,這不會編譯。 – 2011-05-05 00:26:22

+0

*「新的EventHandler可能是有原因的」* - 向後兼容性。後者的語法更新。 – 2011-05-05 00:26:36

回答

5

當您使用短版本時,較新版本的C#會推斷長版本。這意味着即使您編寫的代碼較少,它仍會編譯爲較長的版本。

3

喬恩斯基特在his Refcard寫道:

C#2

介紹,我們可以創建 委託實例的方式兩個重要 改進C#2。

  1. 您不再 需要新的委託類型部分:

StringPredicate predicate = fveCharacters.Filter;

含義的C#2,你可以用它代替上述

StringPredicate predicate = new StringPredicate(fveCharacters.Filter);

所以我猜Visual Studio pu在那裏爲了向後兼容。

相關問題