IDisposable链

时间:2009-08-31 16:48:10

标签: .net idisposable resource-management

如果我使用IDisposable实现一个对象,那么拥有该对象的所有对象是否也应该实现它,即使它们没有其他资源可以释放?

4 个答案:

答案 0 :(得分:12)

是。您需要处理它们,以便正确处理您的成员变量。

每次封装IDisposable类时,都应该使您的类具有IDisposable。在Dispose方法中,您应该处置封装的资源。基本上,对待它们的方式与对待本机资源的方式相同。

答案 1 :(得分:1)

如果您想要确定性处理,最终某些客户端需要调用Dispose或将调用包装在“using”块中。要深入到您的对象,可能需要所有者也实现IDisposable。

您不应该依赖垃圾收集器来释放任何与时间相关的资源。

答案 2 :(得分:1)

是的,拥有类应该实现IDisposable,但它不需要(不应该)有一个Finalizer(析构函数)。

答案 3 :(得分:1)

np,他们只需要使用带有“using”语句的类来确保它们正确地处理该对象,但这些对象本身不需要实现IDisposable