我已经实现了IDisposable
接口,并在下面的代码A
中实现。
我是否应该处理班级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()
方法中,我从A
处理了类GC.SuppressFinalize(this)
;
在课程A
中,我声明了课程B
,因此需要使用相同的C.SuppressFinalize(_objB);
答案 0 :(得分:4)
你完全误解了GC.SuppressFinalize()的作用。只有当你的类有一个析构函数(也就是终结器)时才有意义。你没有,所以不要打电话。如果B实际上实现了IDisposible,那么只需处理它:
public void Dispose()
{
_objB.Dispose();
}
假设_objB可以安全地多次处理,并且在处理之后使用它已经生成了ObjectDisposedException。