有代表处理程序的事件与没有代表处理程序的事件之间有什么区别?
时间:2020-03-06 14:34:50 来源:igfitidea点击:
这有什么区别:
this.btnOk.Click += new System.EventHandler(this.btnOK_Click);
还有这个?
this.btnOk.Click += this.btnOK_Click;
他们俩都工作。前者是使用代码片段时Visual Studio的默认设置。但是,似乎只打了些多余的字眼,还是我错过了一些东西?
解决方案
我相信Csince 3.0已隐式添加了委托处理程序。但是,它可能有助于更加明确,尤其是在存在多种可能的委托类型时。
" + = Delegate_Name"是语法糖。编译器将为我们创建新的包装器。
没有不同。省略委托实例化只是语法上的糖果。 Ccompiler将在幕后为我们生成委托实例化。
在C3.0和更高版本中,这没有区别。由于编译器的限制,在需要C3.0之前需要EventHandlers,但是随着C3.0的出现,除非我们希望非常明确,否则首选第二种形式。