处理Finalize和Destructors

时间:2012-01-06 04:00:51

标签: c#

  

可能重复:
  Finalize vs Dispose

Dispose - 这样可以释放对象内存,在这种情况下GC应该处于最佳状态。

Finalize - 如果没有丢弃对象,那么当对象超出范围时(我的意思是当课程超出范围时),GC会说Finalize来清理它。 / p>

析构函数 - 不知道。你能解释一下不同的b / w析构函数并最终确定吗?

4 个答案:

答案 0 :(得分:2)

Dispose无法释放内存。 Dispose()方法释放或关闭非托管资源。

答案 1 :(得分:1)

析构函数隐式调用finalize,因此它是一种预定义。

有关详细信息,请参阅MSDN。该文档中的一个重要信息:

  

即使对资源进行了这种显式控制,如果对Dispose方法的调用失败,析构函数也会成为清理资源的安全措施。

答案 2 :(得分:1)

Descrtuctor在c ++中,Finalizer在.NET中。尽管你在C#代码中代表终结器的方式看起来像C ++解析器,但它不一样,它的行为也不同。

最终化是.NET内存管理中发生的最后一个过程。处理是清理非托管内存的模式。请记住,Dispose是手动或明确地称为基础的操作,而终结器则不是。它是在运行时自动完成的。

您可能希望阅读this

答案 3 :(得分:1)

<强>的Finalize
它隐式使用垃圾收集器来释放空间。

<强>析构
它用于销毁变量的值。