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

可能重复:
我应该创建一个新的代理实例吗?

嗨,我已经尝试过搜索这个问题的答案了,但是我真的不知道要搜索哪些术语,并且没有任何网站建议的问题是相关的。 我确信这之前一定已经得到了解答。

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

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

例如:

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

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

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

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

他们做同样的事情。 变化

 SomeEvent += new SomeDelegate(SomeMethod) 

是用C#1.0,1.1编写它的唯一方法。 从2.0开始,您可以编写另一种替代方案作为简化。

两者都是一样的。

 SomeEvent += new SomeDelegate(SomeMethod) 

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