Finalize和Dispose的区别

两者都是为了释放非托管资源,如IO句柄、数据库连接等。

Finalize

基类Object定义了受保护的方法Finalize,垃圾回收器判定对象是垃圾后,会调用对象的Finalize方法(注意:重写的都会调用),定义:在类名前添加~,如~ClassName(){};

Finalize由GC隐式调用,它在垃圾对象回收完成后调用,使对象存活时间比正常长,应尽可能避免。

Dispose

类如果想允许使用者控制类所包装的本机资源的生存期,就必须实现IDisposable的Dispose方法,它是一种设计模式;

可以显示调用;

为了避免重复释放资源,在手动调用Dispose后,可以调用GC.SuppressFinalize禁止终结器的调用。

原文地址:https://www.cnblogs.com/pangtouxiaoc/p/13183817.html