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