删除匿名事件处理程序 [重复]

Posted

技术标签:

【中文标题】删除匿名事件处理程序 [重复]【英文标题】:Removing anonymous event handlers [duplicate] 【发布时间】:2011-09-21 13:30:41 【问题描述】:

可能重复:C#: How to remove a lambda event handler

是否可以删除作为匿名函数附加的事件处理程序?假设我有一个活动,我以这种方式订阅它:

TestClass classs = new TestClass ();
classs.myCustomEvent +=  (a,b) =>  Console.Write(""); ;

是否可以使用 -= 以某种方式删除此事件处理程序?

【问题讨论】:

【参考方案1】:

可以,但是需要先存到局部变量中:

MyDelegate handler = (a, b) =>  Console.Write(""); ;
class.myCustomEvent += handler;
class.myCustomEvent -= handler;

【讨论】:

不知道为什么这被否决了... +1,这是一个正确的答案。除了关于“本地”变量的部分:在大多数情况下,您需要将其存储在更长寿的位置...

以上是关于删除匿名事件处理程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

jquery,添加和删除事件处理程序[重复]

使用 lambda 表达式时删除附加的事件处理程序 [重复]

匿名函数绑定的removeEventListener [重复]

停用 JavaScript 页面级事件处理程序 [重复]

再次关于事件删除项的重复

使用单个事件处理程序 asp.net 从网格中处理多个删除事件