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