连接事件处理程序的这两种语法有什么区别?

时间:2011-05-10 13:42:54

标签: c# .net events delegates

  

可能重复:
  Is there an actual difference in the 2 different ways of attaching event handlers in C#?

我看到很多代码看起来像这样:

foo.Drop += new DragEventHandler(fooHandler);

但在过去,我总是这样做:

foo.Drop += fooHandler;

这两种语法之间有区别吗?如果是这样,那么做到这一点有什么好处吗?

4 个答案:

答案 0 :(得分:3)

第二个是第一个的简写;他们会编译成同意的IL。

然而,第二种语法是C#2.0的新内容; C#1仅支持第一个。

答案 1 :(得分:2)

它们都会产生相同的IL

因此,在回答您的问题时,不 - 使用较长版本没有任何好处。

答案 2 :(得分:0)

没有区别,因为.Net 2你可以使用所谓的方法组转换,它允许你直接将方法名称注册到事件而不需要委托对象

答案 3 :(得分:0)

它们是相同的,但在第二个示例中,编译器使用方法组转换为您推断委托类型。句法糖......