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/