0

我有一个类目前有一个终结器,但还没有实现 IDisposable。微软表示“将 IDisposable 接口添加到现有类是一个版本破坏性更改,因为它会更改类的语义”。该类是否应该“固定”并实现 IDisposable?

4

3 回答 3

0

如果你控制了所有使用这个类的代码,那么你就可以做到,并更新代码以调用 Dispose。否则,这不是一个好主意,因为已经存在的外部代码不会调用您的 Dispose()。

于 2013-04-05T12:43:11.650 回答
0

如果添加 IDisposable,则需要在实例化您的类的所有代码中添加代码以调用 dispose() 方法。如果调用/实例化您的类的所有代码都不是由您管理的,那么这可能并不容易并导致未处理的对象。

于 2013-04-05T12:46:28.537 回答
0

这取决于,但基本上没有。终结器只是一个调用来释放内存的清理方法,没有暗示它会被消费代码调用。IDisposable 告诉全世界必须为类的实例调用 dispose 方法,即使在发生错误的情况下也是如此。如果这描述了您的代码,那么它首先应该是一次性的,所以答案是肯定的。但是,如果是这种情况,您将必须更改使用您的类的所有代码,以确保它们调用一次性。

于 2013-04-05T12:47:32.183 回答