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

可能重复:
在C#中附加事件处理程序的两种不同方式是否存在实际差异?

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

foo.Drop += new DragEventHandler(fooHandler); 

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

 foo.Drop += fooHandler; 

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

第二个是第一个的简写; 他们将编译成缩进的IL。

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

它们都会产生相同的IL 。

所以,在回答你的问题时,不 – 使用较长版本没有任何好处。

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

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