使用IDisposable接口来显示类的组成
本文关键字:显示 IDisposable 接口 使用 | 更新日期: 2023-09-27 18:21:48
我已经为类A
实现了IDisposable
接口和下面的代码。
我是否应该处理类B
的对象?
public class A : IDisposable
{
private B _objB = null;
public A()
{
_objB = new B();
}
public void Load(string fileName, int loadFlags)
{
_objB .Load(fileName, 0);
}
public void Close()
{
_objB .Reset();
}
public void Dispose()
{
GC.SuppressFinalize(this);
}
}
在void Dispose()
方法中,我从GC.SuppressFinalize(this)
中处置类A
;
在类A
中,我声明类B
,因此它需要使用相同的C.SuppressFinalize(_objB);
进行处理
您完全误解了GC.SuppressFinalize()的作用。只有当你的类有一个析构函数(又称终结器)时,这才重要。你没有,所以不要调用它。如果B实际上实现了IDisposible,那么就处理它:
public void Dispose()
{
_objB.Dispose();
}
假设_objB可以安全地多次释放,并且在释放后使用它已经生成ObjectDisposedException。