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

StackOverflow https://stackoverflow.com/questions/119160

  •  02-07-2019
  •  | 
  •  

这有什么区别:

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

这个?

this.btnOk.Click += this.btnOK_Click;

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

有帮助吗?

解决方案

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

其他提示

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

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top