Почему «новый EventHandler (Handler)» в .Net? - PullRequest
2 голосов
/ 05 мая 2011

В VisualStudio 2008 и 2010, когда я набираю, например,

this.Activated += 

и нажимаю клавишу Tab, VisualStudio автоматически дополняет строку:

this.Activated += new EventHandler(MainWindow_Activated);

Но работают более простые и лаконичные версиитоже:

this.Activated += MainWindow_Activated;

Эти строки эквивалентны?new EventHandler вероятно, есть причина ...

Ответы [ 2 ]

5 голосов
/ 05 мая 2011

Более новые версии C # выводят длинную версию, когда вы используете короткую версию. Это означает, что даже если вы пишете меньше кода, он все равно компилируется в более длинную версию.

3 голосов
/ 05 мая 2011

Джон Скит написал в свой Refcard :

C # 2

C # 2 представил два важных улучшения в способах создания экземпляров делегатов.

  1. Вам больше не нужна новая деталь типа делегата:

StringPredicate predicate = fveCharacters.Filter;

, то есть, начиная с C # 2, вы можете использовать вышевместо

StringPredicate predicate = new StringPredicate(fveCharacters.Filter);

Так что я предполагаю, что Visual Studio поместит его туда для обратной совместимости.

...