在 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/