有代理处理程序的事件和没有代理处理程序的事件有什么区别?

时间:2008-09-23 04:37:18

标签: c# events

这有什么区别:

this.btnOk.Click += new System.EventHandler(this.btnOK_Click);

这个?

this.btnOk.Click += this.btnOK_Click;

他们都工作。前者是Visual Studio在使用代码段时默认使用的内容。但它似乎只是广告额外的措辞,或者我错过了什么?

4 个答案:

答案 0 :(得分:10)

没有区别。省略委托实例化只是语法糖果; C#编译器将为您生成代理实例化。

答案 1 :(得分:4)

在C#3.0及更高版本中,这没什么区别。在C#3.0之前由于编译器限制需要EventHandlers,但随着C#3.0的出现,除非你想要非常明确,否则第二种形式是首选。

答案 2 :(得分:1)

我相信C#3.0以来隐含地添加了委托处理程序。但是,它可以帮助更明确,尤其是当存在多种可能的委托类型时。

答案 3 :(得分:1)

“+ = Delegate_Name”是一种语法糖。编译器将为您创建新的包装器。