事件声明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#中使用的MinusEqual(-=)和PlusEqual(+=)之间有什么区别

简单地说,+=为事件订阅了一个处理程序,而-=则取消订阅事件的处理程序。(如果指定的处理程序不是现有的订阅者,则会忽略该尝试。)

注意,从C#2:开始,您可以使用更简单的语法

this.btnExport.Click += this.btnExport_Click;

这使用方法组转换this.btnExport_Click转换为EventHandler

事件如何实现订阅和取消订阅取决于实现通常这只是使用Delegate.CombineDelegate.Remove的问题,但不是必须的。从根本上讲,事件有点像属性-除了它有getset功能之外,它还有addremove;在事件上使用+=调用add部分,并且使用-=调用remove部分。

有关更多详细信息,请参阅我关于代表和活动的文章。

+=将事件处理程序注册到事件。

-=将从事件中注销事件处理程序。