C#:SomeEvent + = Method和SomeEvent + = new Delegate(Method)之间的区别是什么

时间:2011-01-13 11:07:52

标签: c# events delegates

  

可能重复:
  Should I Create a New Delegate Instance?

您好,我已尝试搜索此答案,但不知道要搜索的字词,并且网站建议的任何问题都不相关。我确信这之前一定得到了回答。

基本上,有人可以告诉我C#中这两行之间的区别是什么:

SomeEvent += SomeMethod
SomeEvent += new SomeDelegate(SomeMethod)

例如:

DataContextChanged += App_DataContextChanged;
DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged);

他们似乎都做同样的事情。

3 个答案:

答案 0 :(得分:9)

他们是一样的。第二个变体只是第一个名为Method group conversion的简写。

简单地说,编译器通过使用事件本身的委托类型来推断委托的类型。如果我没弄错的话,这是在C#2.0中引入的。

答案 1 :(得分:5)

他们做同样的事情。变化

SomeEvent += new SomeDelegate(SomeMethod)

是在C#1.0,1.1中编写它的唯一方法。从2.0开始,您可以将其他替代方案编写为简化。

答案 2 :(得分:3)

两者都是一样的。

SomeEvent += new SomeDelegate(SomeMethod)

提到了幕后发生的事情,即调用SomeDelegate构造函数来创建对象的实例。

相关问题