|
1
11
终结器是确保正确清理某些内容的最后一次尝试,通常保留给包裹的对象 非受管的 不会回收垃圾的资源,如非托管句柄等。
编写终结器确实很少见。幸运的是(而且不像
对于托管代码,
|
|
|
2
4
终结器仅用于释放 非受管的 例如,GDI位图句柄等资源。如果不分配任何非托管资源,则不需要终结器。总的来说,碰任何东西都不是个好主意 管理 对象,因为无法保证终结顺序。 使用终结器的另一种有用技术是断言在需要应用程序调用Dispose时调用了Dispose。这有助于捕获调试生成中的编码错误:
|
|
3
2
终结器是一种释放不受垃圾收集器控制的资源的机制,如非托管句柄。虽然
|
|
|
4
1
终结器用于清理未处置的资源。
|
|
|
5
1
维基百科 says :
MS本身建议您在实现者中编写类似的内容:
就我个人而言,我无法忍受复制粘贴,所以我倾向于将其包装在一个抽象类中以供重用。 |
|
|
user1907570 · 如何在退出类的任何方法时自动释放连接? 9 年前 |
|
|
Dat Chu · 检查在收集对象之前是否调用了方法 12 年前 |
|
|
avo · 为什么WeakReference.IsAlive变为false? 12 年前 |
|
|
avo · GC调用Object.Finalize时,子对象是否仍然有效? 12 年前 |
|
|
ben ben · Java和C的终结器# 12 年前 |