【问题标题】:Are explicit encapsulating delegates still preferred for events in C#?C# 中的事件是否仍然首选显式封装委托?
【发布时间】:2010-09-30 11:10:13
【问题描述】:

风格问题。

订阅事件的 C# 1.0 方法是使用显式封装委托:

publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);

在 C# 2.0 中,他们添加了更简单的语法:

发布者.RaiseCustomEvent += HandleCustomEvent;

在 Visual Studio 2010(使用 .NET 3.5 项目测试)中键入

“myObject.SomeEvent +=”

打开选项卡以填写显式委托。 此外,使用 WinForms 设计器创建的代码始终使用显式委托。

我理解明确的价值,但不以牺牲可读性为代价。鉴于新语法更简单/更简洁/可读性更强,并且自 2006 年以来一直存在,为什么 Visual Studio 会如此努力地推动您使用旧语法?它仍然是首选语法吗?

【问题讨论】:

    标签: c# events delegates


    【解决方案1】:

    对于设计器代码,它应该坚持显式委托创建。两种方法(隐式类型的委托和显式类型的委托)都会产生相同的 IL;隐式类型只是 C# 中的一个语言特性,因此设计者没有特别的理由尝试利用它们。

    至于附加到事件时的预输入功能,我对此没有任何解释。唯一需要显式创建委托的时间(我知道)是目标类型为Delegate(意味着它没有正式签名)。由于您只能声明一个特定委托类型的事件,因此我认为除了选择优先考虑其他 IDE 功能之外没有其他任何东西作为保留它的原因。

    【讨论】:

      【解决方案2】:

      没有充分的理由。我总是删除它们。随你便吧,尽管我同意你必须删除它们的任何倾向!

      【讨论】:

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