C#学习教程:'+=newEventHandler'和'-=newEventHandler(anEvent)'的区别使用-=newEventHandler(anEvent)的代码,你能告诉我'+=newEventHandler'之间有什么区别吗?谢谢一个将委托添加到订阅者集合,另一个将其删除。例如,如果您之前订阅了一个事件,但您希望在关闭表单时删除该引用,您可以使用-=version并且您将不再收到通知。-=运算符从事件中删除偶数处理程序,而+=将事件处理程序添加到事件。例如:if(checkSomething()){//处理对myControl的点击myControl.Click+=MyEventHanderMethod;}else{//停止处理对myControl的点击myControl.Click-=MyEventHanderMethod;}这两个运算符都是内部框架方法System.MultiCastDelegate.Combine()和System.MultiCastDelegate.Remove()的简单语法快捷方式。每个委托都派生自System.MultiCastDelegate,它包含委托的内部私有链表。IL编译器(合并和删除)转换为+=和–=的新方法实际上只是将内部委托(在+=或–+的右侧)从委托参数添加到左侧(或分别删除)在委托内部链表的一侧,我认为永远不要使用–=newEventHandler(anEvent)因为新的事件处理程序还不能在事件委托列表中。应该做什么:EventHandlereventHandler=newEventHandler(anEvent);一个Object.Event+=eventHandler;...anObject.Event-=eventHandler;更新实际上Ed是对的,委托将检查目标和方法,而不是处理程序对象。我学这个有点晚,害得我写了很多过时的帖子。。。以上就是C#学习教程的全部内容:Differencebetween'+=newEventHandler'and'-=newEventHandler(anEvent)'分享,如果是大家有用,需要多了解C#学习教程。希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
