您好,我已尝试搜索此答案,但不知道要搜索的字词,并且网站建议的任何问题都不相关。我确信这之前一定得到了回答。
基本上,有人可以告诉我C#中这两行之间的区别是什么:
SomeEvent += SomeMethod
SomeEvent += new SomeDelegate(SomeMethod)
例如:
DataContextChanged += App_DataContextChanged;
DataContextChanged += new DependencyPropertyChangedEventHandler(App_DataContextChanged);
他们似乎都做同样的事情。
答案 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构造函数来创建对象的实例。