为什么在.Net中使用“新的EventHandler(处理程序)”?

时间:2011-05-05 00:23:02

标签: .net visual-studio event-handling

在VisualStudio 2008和2010中,当我输入时,例如

this.Activated += 

并按Tab键,VisualStudio会自动补充该行:

this.Activated += new EventHandler(MainWindow_Activated);

但更简单,更简洁的版本也适用:

this.Activated += MainWindow_Activated;

这些线条是否相同? new EventHandler可能是有原因的......

2 个答案:

答案 0 :(得分:5)

当您使用短版本时,较新版本的C#推断长版本。这意味着即使您编写的代码较少,它仍会编译为较长的版本。

答案 1 :(得分:3)

Jon Skeet在his Refcard写道:

  

C#2

     C#2介绍了两个重要的   改进我们可以创造的方式   委托实例。

     
      
  1. 你不再   需要新的代表类型部分:
  2.         

    StringPredicate predicate = fveCharacters.Filter;

表示从C#2开始,您可以使用上述代替

StringPredicate predicate = new StringPredicate(fveCharacters.Filter);

所以我猜测Visual Studio会将其放在那里以实现向后兼容。