【问题标题】:When should I use the destructor? [duplicate]我什么时候应该使用析构函数? [复制]
【发布时间】:2013-10-17 00:56:00
【问题描述】:

在 C# 中,我了解到我可以创建一个类析构函数,如下所示:

public class MyClass
{
    ~MyClass()
    {

    }
}

我的问题是我应该在什么时候以及在什么情况下在 C# 中使用析构函数(如果有的话)?

我应该注意一个常见的用例吗?

【问题讨论】:

  • 可能永远不会。如果要管理资源,请使用 IDisposable。
  • “析构函数”是覆盖Finalize 的语法糖。使用它来手动关闭/清理资源,例如关闭流或类似的东西。

标签: c#


【解决方案1】:

程序员无法控制何时执行析构函数,因为这是由垃圾收集器决定的。垃圾收集器检查应用程序不再使用的对象。它认为这些对象有资格销毁并回收它们的内存。程序退出时也会调用析构函数。当析构函数执行幕后发生的事情时,析构函数隐式调用对象基类的 Object.Finalize 方法。 析构函数代码被隐式翻译成这样的:

protected override void Finalize()
{
   try
   {
      // Cleaning up .
   }
   finally
   {
      base.Finalize();
   }
}

【讨论】:

    猜你喜欢
    • 2011-06-21
    • 2010-09-22
    • 2010-11-10
    • 2011-06-16
    • 2016-07-08
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    相关资源
    最近更新 更多