Hot*_*ter 15 .net garbage-collection dispose finalize
可能重复:
Finalize vs Dispose
嗨,
最近我在一次关于敲定和处置的采访中被问到了.何时使用它们以及垃圾收集器如何与它们相关.请分享链接,以更多地了解该主题.
请分享......
提前致谢.
Joe*_*oey 17
终结器由垃圾收集器运行,然后回收有资格收集的对象.Dispose()用于清理非托管资源,如网络连接,文件,OS操作句柄等.它最好与using块一起使用,编译器确保Dispose()在完成对象后立即调用它 - 并且还确保一旦处理完就不能再使用该对象.
需要注意的是终结不具有运行,因此依靠这可能是危险的:
这对您意味着什么:您的程序不能依赖终结器来保持整洁.终结者是一个安全网,而不是资源回收的主要手段.完成资源后,需要通过调用
Close或者Disconnect对象上可用的任何清理方法来释放它.(IDisposable界面编纂了这个惯例.)
还要注意物体有资格收集的准确时间.阅读上面链接的文章 - 它既不是范围(一个奇怪的词,它与对象的生命周期有关 - 它是"程序文本的区域,通过其不合格的名称引用[命名实体]是合法的. ")也不是严格的引用计数,因为即使在最后一次引用之前,一个对象也有资格收集.
| 归档时间: |
|
| 查看次数: |
27686 次 |
| 最近记录: |