分配C#事件处理程序的区别? [英] Differences in assigning C# event handlers?

查看:45
本文介绍了分配C#事件处理程序的区别?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've always assigned event handlers like this, guided by Intellisense auto-completion.

RangeSelector.RangeChanged += new EventHandler(RangeSelector_RangeChanged);

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

I've recently noticed one of my colleagues does it this way.

RangeSelector.RangeChanged += RangeSelector_RangeChanged;

这两种方法在语法上都是正确的,可编译且行为符合预期.

Both methods are syntactically correct, compile and behave as expected.

这些方法的区别,优点或缺点是什么?它们导致相同的IL代码还是我需要注意一些细微的区别?

What are the differences, benefits or disadvantages of these methods. Do they result in the same IL code or is there some subtle difference that I need to be aware of?

推荐答案

这些方法有什么区别,优点或缺点.

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

第二种方法较新,即自C#2.0(我相信)以来才受支持,C#2.0添加了从方法组(即方法名)到委托的自动转换.因此,构造函数调用是由编译器添加的,第二种方法只是第一种方法的语法糖.

The second method is newer, i.e. it is only supported since C# 2.0 (I believe), which added an automatic conversion from a method group (i.e. a method name) to a delegate. The constructor call is thus added by the compiler and the second method is just syntactic sugar for the first one.

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

Because of that, there are no other differences between the two.

由于第二种方法与第一种方法具有相同的功能,并且语法较少,因此应优先使用.

Since the second method does the same as the first, with less syntax, it should be preferred.

这篇关于分配C#事件处理程序的区别?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆