首先,很抱歉,如果这被认为是重复的 - 我知道这是一个常见的话题,但我已经看过并没有找到令人满意的答案。
有很多问题询问何时使用,IDisposable但从我读过的所有内容来看,我只是不明白为什么你不会在你制作的每个类中实现它。有什么可失去的?它对性能有很大影响吗?
我的部分理解IDisposable是它所做的事情之一是:
Dispose() 处理对象拥有的其他 IDisposables。原谅我的无知,但这仅适用于给定对象的字段/属性,还是也扩展到在其方法中创建的对象?
例如,如果 aFont是在实现 的类中的方法内创建的IDisposable,但Font没有用using块初始化,或者.Dispose()d 在方法末尾显式初始化;当它的IDisposable父/类被 GCd/disposed 时它会被处理吗?否则,Font永远不会被处置?
我并不是要跑题,但如果它确实会像这样“包罗万象”(有效地处理任何IDisposable本来不会被处理的错误子对象),那么仅凭这个理由还不足以证明其合理性吗?总是IDisposable尽可能地实施?