在VisualStudio 2008和2010中,當我輸入時,例如爲什麼「新的EventHandler(Handler)」在.Net中?
this.Activated +=
,然後按Tab,VisualStudio中自動補充了一行:
this.Activated += new EventHandler(MainWindow_Activated);
但更簡單,更簡潔的版本也工作:
難道這些線路相同呢? new EventHandler
可能是有原因的...
在VisualStudio 2008和2010中,當我輸入時,例如爲什麼「新的EventHandler(Handler)」在.Net中?
this.Activated +=
,然後按Tab,VisualStudio中自動補充了一行:
this.Activated += new EventHandler(MainWindow_Activated);
但更簡單,更簡潔的版本也工作:
難道這些線路相同呢? new EventHandler
可能是有原因的...
當您使用短版本時,較新版本的C#會推斷長版本。這意味着即使您編寫的代碼較少,它仍會編譯爲較長的版本。
喬恩斯基特在his Refcard寫道:
C#2
介紹,我們可以創建 委託實例的方式兩個重要 改進C#2。
- 您不再 需要新的委託類型部分:
StringPredicate predicate = fveCharacters.Filter;
含義的C#2,你可以用它代替上述
StringPredicate predicate = new StringPredicate(fveCharacters.Filter);
所以我猜Visual Studio pu在那裏爲了向後兼容。
此問題可能已被問及已回答。我搜查了並沒有成功。 – 2011-05-05 00:23:41
你不需要第二種方式的「新」,也可以。事實上,這不會編譯。 – 2011-05-05 00:26:22
*「新的EventHandler可能是有原因的」* - 向後兼容性。後者的語法更新。 – 2011-05-05 00:26:36