对于C#中的事件,显式封装代理是否仍然是首选?

时间:2010-09-30 03:04:05

标签: c# events delegates

风格问题。

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

publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent);

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

publisher.RaiseCustomEvent += HandleCustomEvent;

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

"myObject.SomeEvent +="

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

没有充分的理由。我总是删除它们。适合自己,虽然我同意你必须删除它们的任何倾向!