首先,很抱歉,如果这被认为是重复的 - 我知道这是一个常见的话题,但我已经看过并没有找到满意的答案。
有很多问题询问 到 何时使用 IDisposable
,但从我读过的所有内容来看,我只是不明白为什么你不会在你制作的每个类中都实现它。有什么可失去的?它对性能有很大的影响吗?
我对 IDisposable
的部分理解是它所做的一件事是:
Dispose()ing other IDisposables owned by the object 。请原谅我的无知,但这是否仅适用于给定对象的字段/属性,还是也适用于在其方法中创建的对象?
例如,如果在实现 Font
的类中的方法内创建了 IDisposable
,但该 Font
没有使用 using
块初始化,或者在方法末尾显式地初始化 .Dispose()
d;当它的 IDisposable
父/类被 GCd/处置时,它会被处置吗?否则,Font
永远不会被处理掉吗?
我不是要离题,但如果它确实会像这样充当“包罗万象”(有效地处理任何错误的子 IDisposable
对象,否则这些对象将不被处理),仅凭这个理由还不够证明 总是 尽可能实现 IDisposable
?
最佳答案
规则非常简单,如果您的类中有任何属于一次性类型的字段,则需要实现 IDisposable。以便您可以处理它们。
方法内部发生的事情与类的字段几乎没有关系。如果您创建字体并将其存储在一个字段中,那么是的,上面的规则说您需要一个 Dispose() 方法。如果您不只是使用字体来绘制某些东西,就像您通常所做的那样,那么请始终使用 using 语句,以便在使用完字体后立即处理字体。
关于c# - 我什么时候不应该实现 IDisposable?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18647848/