要处理事件,我使用以下代码:
obj.Evt += new EvtEventHandler(DoEvt);
或
obj.Evt += DoEvt;
会得到相同的结果;
所以......请告诉我应该选择哪一个!为什么?
答案 0 :(得分:4)
假设Evt
被输入为EvtEventHandler
,那么没有区别(除非你使用C#1.2,只有第一个存在)。
使用您想要的任何一种。
答案 1 :(得分:4)
没关系。在幕后,两种方式都是相同的(编译器生成相同的代码)。请参阅ECMA C#规范中的“13.6方法组转换”(您可以阅读here)。
答案 2 :(得分:3)
是的,他们的结果相同。但是,如果您使用的是1.0
或1.1
,则必须指定EvtEventHandler
,对于以后的版本2.0
以上,您可以摆脱它。
答案 3 :(得分:2)
对于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)
但我认为第一个对维护代码很有意义。