要处理事件,我使用如下的代码:我应该选择哪个代码来调用委托方法?
obj.Evt += new EvtEventHandler(DoEvt);
或
obj.Evt += DoEvt;
将使相同的结果;
所以...请告诉我哪一个我应该选择!为什么?
要处理事件,我使用如下的代码:我应该选择哪个代码来调用委托方法?
obj.Evt += new EvtEventHandler(DoEvt);
或
obj.Evt += DoEvt;
将使相同的结果;
所以...请告诉我哪一个我应该选择!为什么?
假设Evt
键入为EvtEventHandler
那么没有区别(除非使用C#1.2,其中只有第一个存在)。
使用无论你想要的。
没关系。在幕后,两种方式都是相同的(编译器生成相同的代码)。请参阅ECMA C#规范中的“13.6方法组转换”(您可以阅读它here)。
是的,他们做出了相同的结果。但是,如果您使用的是1.0
或1.1
,则必须指定EvtEventHandler
,对于更高版本的2.0
和更高版本,您可以从中删除它。
对于IL,它们是相同的,
IL_0020: newobj instance void [mscorlib]System.EventHandler::.ctor(object,
native int)
IL_0025: callvirt instance void ConsoleApplication15.A::DoEvt(class [mscorlib]System.EventHandler)
但我认为第一个是有意义的维护你的代码。