我是否需要手动删除所有事件以使我的对象从内存中删除?

Pat*_*ins 3 .net asp.net events c#-2.0

我在MSDN中读过,需要取消订阅对象必须能够从内存中处理它的每个事件.我总是使用 - =删除对象内部事件的所有引用(如MSDN show).

现在,我必须维护代码并且它有一些内存泄漏.我看到前一个开发人员只是将所有事件订阅的对象设置为NULL而不是 - =每个事件方法.

例:

_watcher.Changed += new ...
_watcher.Created += new ...
_watcher.Deleted += ..

//later.

_watcher = NULL;
Run Code Online (Sandbox Code Playgroud)

这是一个好方法还是将变量保存在内存中?

Mit*_*eat 6

如果没有其他引用_watcher,则无需删除事件处理程序以避免内存泄漏.

作为习惯问题,我倾向于明确删除事件处理程序.