Finalize vs Dispose
Finalize vs Dispose
为什么有些人使用Finalize
方法而不是Dispose
方法?
在什么情况下您会使用Finalize
方法而不是Dispose
方法,反之亦然?
admin 更改状态以发布 2023年5月21日
其他人已经介绍了Dispose
和Finalize
之间的区别(顺便提一句,Finalize
方法在语言规范中仍被称为析构函数),因此我将添加一些关于Finalize
方法有用的场景。
某些类型以一种易于在单个操作中使用和处理可处理资源的方式进行封装。通常的用法就像这样:打开、读取或写入、关闭(Dispose)。它非常适合using
结构。
其他的则有点更困难。例如,WaitEventHandles
并不像这样使用,因为它们用于在一个线程和另一个线程之间发信号。那么这些类型的Dispose
应该由谁来调用呢?作为一种保护,这些类型实现了Finalize
方法,当应用程序不再引用实例时,可以确保资源被处理。