c# - 分配给事件时隐式委托(delegate)分配?

标签 c# delegates

Possible Duplicate:
C#: Difference between ' += anEvent' and ' += new EventHandler(anEvent)'

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

button.OnButtonClicked += ButtonClickHandler;

或者:

button.OnButtonClicked += new ButtonClickHandlerDelegate( ButtonClickHandler );

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

The difference between implicit and explicit delegate creation (with and without generics)

最佳答案

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

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

实际上,我认为这是 this prior question 的重复项。

关于c# - 分配给事件时隐式委托(delegate)分配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6656200/

相关文章:

ios - 使用委托(delegate)将数据从一个 TableView 传输到另一个

c# - 有没有办法将函数及其参数存储在变量中以供以后调用?

c# - NHibernate Criteria API 是否支持对集合属性的预测?

c# - XSLT 将 xml 转换为 csv 并为每条记录重复同级

c# - 如何在 SQL Server CE 数据库 windows phone 8 上使用双向绑定(bind)

c# - 在 C# 中从 Msi 中的自定义操作强制重启

c# - 使用和不使用调试器的反射泛型委托(delegate)的不同行为

c# - 创建随机颜色 (System.Drawing.Color)

iphone - 没有进入功能-navigationController :willShowViewController:animated:

c# - 在运行时将 lambda 转换为委托(delegate)