分配给事件时是否隐式委派分配

本文关键字:分配 委派 事件 是否 | 更新日期: 2023-09-27 18:01:59

可能重复:
C#:';+=之间的差异an事件';和';+=新事件处理程序(anEvent(';

在C#.NET 3.5中,编译器不在乎我是否这样做(假设ButtonClickHandler是一个函数(:

button.OnButtonClicked += ButtonClickHandler;

或:

button.OnButtonClicked += new ButtonClickHandlerDelegate( ButtonClickHandler );

这些功能相同吗?我阅读了下面的stackoverflow问题,但我不确定它是否也适用于这种情况:

隐式和显式委托创建(有泛型和没有泛型(之间的区别

分配给事件时是否隐式委派分配

是的,第一个只是后者的语法糖。编译器只需推断委托的类型并为您构建它。编译器将发出完全相同的IL。

第一个更短、更干净的语法(委托推理,我建议您使用它来提高可读性(是在C#2中添加的,这就是为什么一些设计人员(也是微软的(倾向于在委托中使用更长、更详细的new语法。

事实上,我认为这是重复先前的问题。

在C#4中,这将产生相同的代码,因此它们在功能上是相同的。在第一种(较短的(形式中,编译器从方法签名推断委托类型,这省去了必须显式执行的工作。