在C#中,注册事件处理程序时,您有两个选项(btn
类型为System.Windows.Controls.Button
):
btn.Click += new RoutedEventHandler (ButtonClick)
和
btn.Click += ButtonClick
。
它们之间的语义差异及其含义是什么?
答案 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#委托和事件关键字。