在 C# 中,注册事件处理程序时,您有两个选项(btn
is of type System.Windows.Controls.Button
):
btn.Click += new RoutedEventHandler (ButtonClick)
和
btn.Click += ButtonClick
.
它们之间的语义差异及其含义是什么?
第一个版本将在所有版本的 .Net 上无错误地编译。
第二个版本只能在 .Net 2 或更高版本上编译。
这是唯一的区别。第二个版本只是 .Net 2 引入的一些语法糖。
它被称为方法组转换。有关详细信息,请参见此处:
http://mike-ward.net/blog/post/00020/anonymous-methods-method-group-conversions-and-eventhandler
据我了解,什么都没有,编译器会推断委托类型并自动为您包装它,这只是一种简写方式(因为谁真的想把它全部输入)。
没有区别。要了解这些 C# 功能,您应该阅读 C#委托和事件关键字。