事件声明c#中使用的MinusEqual(-=)和PlusEqual(+=)之间有什么区别
本文关键字:PlusEqual 之间 区别 什么 声明 MinusEqual 事件 | 更新日期: 2023-09-27 18:28:38
我想知道这两者之间的区别。我经常将此+=
用于之类的事件
this.btnExport.Click += new System.EventHandler(this.btnExport_Click);
有时,我确实会遇到一些声明,比如下面。
this.cmbClient.SelectedIndexChanged -= new System.EventHandler(this.cmbClient_SelectedIndexChanged);
我试着检查msdn上的差异,但找不到来源。请提供任何帮助或澄清,我们将不胜感激。
简单地说,+=
为事件订阅了一个处理程序,而-=
则取消订阅事件的处理程序。(如果指定的处理程序不是现有的订阅者,则会忽略该尝试。)
注意,从C#2:开始,您可以使用更简单的语法
this.btnExport.Click += this.btnExport_Click;
这使用方法组转换将this.btnExport_Click
转换为EventHandler
。
事件如何实现订阅和取消订阅取决于实现通常这只是使用Delegate.Combine
和Delegate.Remove
的问题,但不是必须的。从根本上讲,事件有点像属性-除了它有get
和set
功能之外,它还有add
和remove
;在事件上使用+=
调用add
部分,并且使用-=
调用remove
部分。
有关更多详细信息,请参阅我关于代表和活动的文章。
+=将事件处理程序注册到事件。
-=将从事件中注销事件处理程序。