如何删除所有eventhandler

Emi*_*nem 11 c# delegates event-handling

让我们说我们有一个代表

public delegate void MyEventHandler(string x);
Run Code Online (Sandbox Code Playgroud)

和一个事件处理程序

public event MyEventHandler Something;
Run Code Online (Sandbox Code Playgroud)

我们添加了多个事件..

for(int x = 0; x <10; x++)  
{
   this.Something += HandleSomething;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是..如何从事件处理程序中删除所有方法,假设一个人不知道它已被添加10(或更多或更少)次?

Pat*_*man 21

只需将活动设置为null:

this.Something = null;
Run Code Online (Sandbox Code Playgroud)

它将取消注册所有事件处理程序.

  • 我一直认为必须手动删除它们,但令人惊讶的是..这确实有效..我做了一些类似于http://stackoverflow.com/questions/447821/how-do-i-unsubscribe-all-handlers上接受的答案的事情-来自 c 中特定类的事件 (2认同)