c# - 分配 C# 事件处理程序的差异?

标签 c# events event-handling

在 Intellisense 自动完成的指导下,我总是像这样分配事件处理程序。

RangeSelector.RangeChanged += new EventHandler(RangeSelector_RangeChanged);

我最近注意到我的一位同事是这样做的。

RangeSelector.RangeChanged += RangeSelector_RangeChanged;

这两种方法在语法上都是正确的,可以按预期编译和运行。

这些方法有什么区别、优点或缺点。它们是否会产生相同的 IL 代码,或者是否存在我需要注意的细微差别?

最佳答案

What are the differences, benefits or disadvantages of these methods.

第二种方法较新,即它仅在 C# 2.0(我相信)之后才受支持,它添加了从方法组(即方法名称)到委托(delegate)的自动转换。因此,编译器添加了构造函数调用,而第二种方法只是第一种方法的语法糖。

因此,两者之间没有其他区别。

由于第二种方法与第一种方法相同,语法较少,因此应该优先使用。

关于c# - 分配 C# 事件处理程序的差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1326778/

相关文章:

c# - 在 C# 中将 "+"键分配给 ADD 按钮

python - Plone 成员数据更新 : PropertiesUpdatedEvent not triggered

c# - 什么时候应该使用 XPath?

c# - 在多个类中继承相同接口(interface)的问题

c# - Azure 网站的 VS2013 Cordova 插件和 X-Frame-Options header 问题

java - 如何检查 EDT(事件调度线程)是否已完成 Java 中的事件调度

c# - 异常会降低性能吗?

c# - 如果是,是否建议异步引发所有事件

WPF - 如何检测何时添加了新的 Visual 子元素?

android - 用手指移动 OpenGL 对象