“btn.Click + = new RoutedEventHandler(ButtonClick)”和“btn.Click + = ButtonClick”之间有什么区别?

时间:2013-06-18 09:11:43

标签: c# wpf

在C#中,注册事件处理程序时,您有两个选项(btn类型为System.Windows.Controls.Button):

btn.Click += new RoutedEventHandler (ButtonClick)

btn.Click += ButtonClick

它们之间的语义差异及其含义是什么?

3 个答案:

答案 0 :(得分:7)

第一个版本将在.Net的所有版本上编译而没有错误。

第二个版本只能在.Net 2或更高版本上编译。

这就是唯一的差异。第二个版本只是.Net 2引入的一些语法糖。

它被称为方法组转换。有关详细信息,请参见此处:

http://mike-ward.net/blog/post/00020/anonymous-methods-method-group-conversions-and-eventhandler

答案 1 :(得分:3)

据我所知,没有什么,编译器会推断出委托类型并自动为你包装它,这只是一种简单的方法(因为谁真的想把它全部输出)。

答案 2 :(得分:1)

没有区别。要了解这些C#功能,您应该阅读C#委托事件关键字。