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构造函数来创建对象的实例。