据我所知,这是一个公认的规则,如果你有一个类a,它的成员m是IDisposable,a应该实现IDisposaable,它应该在其中调用m.Dispose()。
我找不到一个令人满意的理由来解释为什么会这样。
我理解这样一条规则,即如果您有非托管资源,您应该提供一个终结器和IDisposable,这样,如果用户没有显式调用Dispose,终结器仍将在GC期间清理。
然而,有了这个规则,你似乎不需要有这个问题的规则。例如。。。
如果我有课:
class MyImage{
private Image _img;
... }
约定规定我应该有MyImage:IDisposable
。但是,如果Image遵循惯例并实现了终结器,而我不关心资源的及时发布,那又有什么意义呢?
更新
在此处。