据我所知,如果您有一个具有 IDisposable 成员 m 的类 A,则 A 应该实现 IDisposable 并且它应该在其中调用 m.Dispose() 是一个公认的规则。
我找不到令人满意的理由。
我理解如果你有非托管资源,你应该提供一个终结器以及 IDisposable 的规则,这样如果用户没有显式调用 Dispose,终结器仍然会在 GC 期间清理。
但是,有了该规则,您似乎不需要拥有该问题所涉及的规则。例如...
如果我有一堂课:
class MyImage{
private Image _img;
... }
公约规定我应该有MyImage : IDisposable
. 但是如果 Image 遵循约定,实现了一个 finalizer,而我不关心资源的及时释放,那还有什么意义呢?
更新
找到了关于我想在这里得到什么的很好的讨论。