委托创建表达式和方法组转换之间有什么区别?

Rac*_*hel 3 c# wpf event-handling

我想知道它们之间有什么区别

button.Click += new RoutedEventHandler(button_Click);
Run Code Online (Sandbox Code Playgroud)

button.Click += button_Click;
Run Code Online (Sandbox Code Playgroud)

我已经看过两个并且通常使用第二个版本,但我想知道差异是什么以及何时使用一个而不是另一个.

Jon*_*eet 5

除了第一个在C#1中有效而第二个不在C#1之外没有区别.

另一方面,仅在RHS表达方面存在差异.例如:

Delegate valid = new RoutedEventHandler(button_Click);
Delegate invalid = button_Click;
Run Code Online (Sandbox Code Playgroud)

在后一种情况下,编译器不知道您要将方法组转换为哪个委托,因此您将遇到编译时失败.