【问题标题】:What is the difference between these two syntaxes for hooking up an event handler? [duplicate]这两种连接事件处理程序的语法有什么区别? [复制]
【发布时间】:2011-05-10 13:42:54
【问题描述】:

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

我见过很多这样的代码:

foo.Drop += new DragEventHandler(fooHandler);

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

foo.Drop += fooHandler;

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

【问题讨论】:

标签: c# .net events delegates


【解决方案1】:

第二个是第一个的简写;它们将编译为相同的 IL。

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

【讨论】:

    【解决方案2】:

    它们都会产生相同的IL

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

    【讨论】:

    • 您链接到一个消歧页面,该页面表明 MSIL 是现在称为 CIL 的“前首字母缩写词”。
    • @Cody Gray 更新为更直接的链接
    • 我认为这是为了强调该平台并非完全专有。微软在不同时期都对 Mono Project 等工作给予了鼓励。我认识的每个人都称它为“IL”,包括我自己。防止营销干扰理解。 ;-)
    • 好地方-谢谢。答案更新为“IL”;)
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多