C#实现IDisposable只是为了清理事件处理程序
本文关键字:事件处理 程序 实现 IDisposable | 更新日期: 2023-09-27 17:58:14
实现IDisposable以清理事件注册是否是一种糟糕的编程实践?
例如:
public void Dispose()
{
TextChanged -= TextChanged;
}
这取决于
如果手动调用Dispose或使用using
语句,则可以。
using(var subscriber = new MySuperSubscriber()) {
// some logic
}
如果您希望Dispose
由终结器调用,那么这是不好的,因为终结器不能被调用,因为您将在事件处理程序中有一个对组件的"活动"引用。