添加事件处理程序

Jos*_*ose 7 c# events event-handling

有人可以告诉我以下陈述的区别是:

MyObject.MyEvent += new EventHandler(MyEventHandlerMethod);
vs.
MyObject.MyEvent += MyEventHandlerMethod;
Run Code Online (Sandbox Code Playgroud)

每当我+=点击标签时弹出第一个选项就会弹出,所以我总是离开它.但我想知道我是否可以写第二个.我猜他们两个都编译得一样,但我很好奇,如果那是真的.我很确定我只能看看IL,但我太懒了:)我宁愿问一下.

Kon*_*lph 7

第一个变体在第一个C#编译器中是必需的.后续版本不需要它 - 第二个版本严格等同于第一个版本,编译器将提供构造函数调用.

由于第二个变体更短,删除不必要的冗余并且没有缺点,我建议使用它,而不是显式版本.另一方面,IDE很遗憾只为第一个版本提供了智能代码完成功能,因此您可能只想使用它.