C#实现IDisposable只是为了清理事件处理程序

时间:2014-04-14 20:26:44

标签: c#

为清理事件注册而实施IDisposable是不是很糟糕的编程习惯?

例如:

public void Dispose()
{
    TextChanged -= TextChanged;
}

1 个答案:

答案 0 :(得分:2)

取决于,

如果您手动调用Dispose或使用using语句,则可以。

using(var subscriber = new MySuperSubscriber()) {
   // some logic
}

如果你期望终结器调用Dispose - 那就不好了,因为不能调用终结器,因为你将在事件处理程序中对你的组件进行“活动”引用。