5

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

4

4 回答 4

12

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

任何时候封装 IDisposable 类时,都应该使您的类 IDisposable。在您的 Dispose 方法中,您应该释放封装的资源。基本上,像对待原生资源一样对待它们。

于 2009-08-31T16:52:20.730 回答
1

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

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

于 2009-08-31T17:01:53.860 回答
1

是的,拥有类应该实现 IDisposable 但它不需要(不应该有)终结器(析构函数)。

于 2009-08-31T17:37:18.827 回答
1

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

于 2009-08-31T17:40:39.820 回答