2011-05-10 20 views
2

可能重复:
Is there an actual difference in the 2 different ways of attaching event handlers in C#?连接事件处理程序的这两种语法之间有什么区别?

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

foo.Drop += new DragEventHandler(fooHandler); 

但在过去,我一直完成此操作:

foo.Drop += fooHandler; 

这两种语法是否有区别?如果是这样,那么这样做有什么好处吗?

+1

可能重复[在C#中附加事件处理程序的两种不同方式有实际区别?](http://stackoverflow.com/questions/214346/is-there-an-actual -disference-in-the-2-different-ways-of-attach-event-handlers),[事件与委托处理程序和没有?的区别是什么?](http://stackoverflow.com/questions/119160/什么是差异之间的事件与委托处理程序和那些没有),[在C#中附加\分离事件处理程序的不同方式之间的区别](http://stackoverflow.com/questions/4360451 /) – 2011-05-10 13:45:30

+0

绝对是重复的。投票结束自己。 – 2011-05-10 13:52:37

回答

3

第二个是第一个速记;他们将编译为indentical IL。

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

2

他们都会导致相同的IL

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

+0

您链接到消除歧义页面,表明MSIL是现在称为[CIL]的“以前的缩写”(http://en.wikipedia.org/wiki/Common_Intermediate_Language)。 – 2011-05-10 13:48:22

+0

@Cody Gray更新到更直接的链接 – Nathan 2011-05-10 13:53:10

+0

我认为它来自强调该平台不完全专有的努力。微软在不同时期对Mono项目的努力有些鼓舞。我认识的每个人都把它称为“IL”,包括我自己在内。防止营销干扰理解。 ;-) – 2011-05-10 13:54:48

0

没有区别,因为净2,你可以使用所谓方法组转换,让你可以直接注册方法名到事件未做委托对象

0

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

相关问题