谁能告诉我,如果还是什么下面的语句的区别是:添加事件处理程序
MyObject.MyEvent += new EventHandler(MyEventHandlerMethod);
vs.
MyObject.MyEvent += MyEventHandlerMethod;
当我点击选项卡,所以我一直都离开它时,我按+=
的第一选择弹出。但我想知道如果我能写第二个。我猜他们都编译了一样,但我很好奇,如果这是真的。我很确定我只能看IL,但我太懒了:),我宁愿问一下。
谁能告诉我,如果还是什么下面的语句的区别是:添加事件处理程序
MyObject.MyEvent += new EventHandler(MyEventHandlerMethod);
vs.
MyObject.MyEvent += MyEventHandlerMethod;
当我点击选项卡,所以我一直都离开它时,我按+=
的第一选择弹出。但我想知道如果我能写第二个。我猜他们都编译了一样,但我很好奇,如果这是真的。我很确定我只能看IL,但我太懒了:),我宁愿问一下。
的第一变型在第一C#编译器是必要的。后续版本不需要它 - 第二个版本严格等同于第一个版本,编译器将提供构造函数调用。
由于第二变短,消除不必要的冗余,没有缺点,我建议使用,而不是明确的版本它。另一方面,不幸的是,IDE仅为第一个版本提供了智能代码完成功能,因此您可能只需要完成它。
不正确。看到我的答案。两者都编译为SomeEvent + = NamedMethod相同的东西。但是,如果您打算稍后移除该事件处理程序,则确实应该保存该委托。 – Priyank 2011-04-22 14:22:48
@Priyank不,不需要那个。 ' - ='也适用于任何一种形式。 – 2011-04-23 13:22:36
它们是相同的。没有区别。第二种形式基本上是第一种形式的简写形式,它们将产生相同的IL。
因此,这个结论是,写作SomeEvent += new EventHandler(NamedMethod)
编译为只是SomeEvent += NamedMethod
相同的东西。但是,如果您打算稍后移除该事件处理程序,则确实应该保存该委托。
编号:+= new EventHandler(Method) vs += Method
Difference between ‘ += new EventHandler’ and ‘ -= new EventHandler(anEvent)’
它们是相同的。第一条语句由第二条语句推断,并在管道中为您处理。不正确。
可能重复的[C#事件处理程序](http://stackoverflow.com/questions/26877/c-sharp-event-handlers) – nawfal 2014-07-06 20:24:49