C# 我应该选择哪种代码来调用委托方法?

C# 我应该选择哪种代码来调用委托方法?,c#,delegates,C#,Delegates,要处理事件,我使用以下代码: obj.Evt += new EvtEventHandler(DoEvt); 或 将产生同样的结果 所以。。。请告诉我该选哪一个!为什么呢?假设Evt的类型是EvtEventHandler,那么就没有区别了,除非使用C 1.2,其中只有第一个存在 你想用哪一个都行。没关系。在幕后,两种方法都是相同的——编译器生成相同的代码。请参阅ECMA C规范中的13.6方法组转换。您可以阅读它。是,它们产生相同的结果。但是,如果您使用的是1.0或1.1,则必须指定EvtEve

要处理事件,我使用以下代码:

obj.Evt += new EvtEventHandler(DoEvt);

将产生同样的结果

所以。。。请告诉我该选哪一个!为什么呢?

假设Evt的类型是EvtEventHandler,那么就没有区别了,除非使用C 1.2,其中只有第一个存在


你想用哪一个都行。

没关系。在幕后,两种方法都是相同的——编译器生成相同的代码。请参阅ECMA C规范中的13.6方法组转换。您可以阅读它。

是,它们产生相同的结果。但是,如果您使用的是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)
但是我认为第一个对于维护代码是有意义的

  IL_0020:  newobj     instance void [mscorlib]System.EventHandler::.ctor(object,
                                                                     native int)
  IL_0025:  callvirt   instance void ConsoleApplication15.A::DoEvt(class [mscorlib]System.EventHandler)