Alf*_*fie 3 .net c# memory-leaks memory-management idisposable
首先,对不起,如果这被认为是重复 - 我知道这是一个共同的话题,但我看了,但没有找到一个满意的答案.
有很多的问问题时要使用IDisposable,但一切我读过,我只是不明白为什么你不会在你的每类实现它.有什么可失去的?它是否有很大的性能影响?
我理解的部分原因IDisposable是它所做的一件事是:
Dispose()对象拥有的其他IDisposable.原谅我的无知,但这只适用于给定对象的字段/属性,还是也扩展到在其方法中创建的对象?
例如,如果a Font是在实现的类中的方法内创建的IDisposable,但是Font没有使用using块初始化,或者.Dispose()在方法的末尾显式地创建; 当它的IDisposable父母/班级被GCd /处置时会被处置吗?否则,Font永远不会被处置?
我并不是要离题,但如果确实这样做会像这样"抓住一切"(有效地处理任何IDisposable本来不会留下的错误的儿童对象),那么单凭这个理由不足以证明这一点.总是IDisposable尽可能地实施?
规则非常简单,如果您的类中有任何一次性类型的字段,则需要实现IDisposable.这样你就可以处理它们了.
方法内部发生的事情与您的类的字段几乎没有关系.如果您创建字体并将其存储在字段中然后是,则上述规则表明您需要Dispose()方法.如果你不这样做,只是使用字体来绘制一些东西,就像你通常那样,那么总是使用using语句,这样你就可以在完成后使用它来立即处理它.
| 归档时间: |
|
| 查看次数: |
1424 次 |
| 最近记录: |