2010-09-30 23 views
1

款式问题。显式封装代表仍然首选C#中的事件吗?

到订阅事件的C#1.0的方法是使用一个明确的包封委托:

 
publisher.RaiseCustomEvent += new CustomEventHandler(HandleCustomEvent); 

在C#2.0他们增加了简单的语法:

 
publisher.RaiseCustomEvent += HandleCustomEvent; 

在Visual Studio 2010(测试与一个.NET 3.5项目)打字

 
"myObject.SomeEvent +=" 

调出选项卡来填写exp合法代表。此外,使用WinForms设计器创建的代码始终使用显式委托。

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

+0

我希望微软能够在IDE中“解决”这个问题;它已经“破碎”了很长一段时间了。 – 2010-09-30 03:13:50

回答

1

对于设计者代码,它应该坚持显式委托创建。这两种方法(隐式类型的委托和显式类型的委托)导致相同的IL;隐式类型只是C#中的一种语言功能,所以设计人员没有特别的理由尝试利用它们。

至于附加到事件时的typehead功能,我没有解释这一点。唯一需要明确委托创建的时间(我知道)是当目标类型为Delegate(意味着它没有正式签名)。由于您只能声明特定委托类型的事件,因此除了选择优先考虑其他IDE功能之外,我没有发现任何其他内容,因为这是继续存在的原因。

0

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