首先,如果这被认为是重复内容,我很抱歉 - 我知道这是一个常见话题,但我已经查阅了很多,没有找到令人满意的答案。
有很多问题在询问何时使用 IDisposable
,但从我所读的所有内容来看,我就是看不出为什么你不会在你创建的每个类中都实现它。有什么可以失去的?它会对性能产生很大影响吗?
我的理解之一是:IDisposable
的作用之一是:
Dispose() 所拥有的对象的其他 IDisposables。请原谅我的无知,这是仅适用于给定对象的字段/属性还是也扩展到其方法中创建的对象呢?
例如,如果在实现 IDisposable
的类中的方法内创建了一个 Font
,但该 Font
没有使用 using
块进行初始化或在方法末尾显式调用 .Dispose()
,那么当它的 IDisposable
父对象/类被 GCd/disposed 时,它会被处理吗?否则,Font
将永远不会被处理吗?
我不是要离题,但如果它确实像这样充当 'catch all'(有效地处置任何会被遗漏而未处置的子 IDisposable
对象),那么这就足以证明始终在可能情况下实现 IDisposable
了吗?
IDisposable
。 - Simon Whitehead