移除匿名事件处理程序

11

可能是重复问题:
C#:如何删除Lambda事件处理程序

如果事件被附加为匿名函数,是否可以删除它?假设我有一个事件,并以以下方式订阅它:

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

有没有可能使用 -= 的方式移除这个事件处理程序?

1个回答

24

这是可能的,但需要先将其存储在本地变量中:

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

3
不确定为什么会被投下反对票...+1,这是一个正确的答案。除了关于“本地”变量的部分:在大多数情况下,您需要将其存储在更长寿命的位置中... - Thomas Levesque

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接