Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该什么时候使用析构函数?_C# - Fatal编程技术网

C# 我应该什么时候使用析构函数?

C# 我应该什么时候使用析构函数?,c#,C#,在C#中,我了解到我可以创建一个类析构函数,如下所示: public class MyClass { ~MyClass() { } } 我的问题是什么时候,在什么情况下,我应该在C#中使用析构函数,如果有的话 是否有一个我应该注意的常见用例?程序员无法控制何时执行析构函数,因为这是由垃圾收集器决定的。垃圾收集器检查应用程序不再使用的对象。它认为这些对象符合销毁条件,并回收它们的内存。当程序退出时,也会调用析构函数。当析构函数执行幕后发生的事情时,析构函数隐式调用对象基

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

public class MyClass
{
    ~MyClass()
    {

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


是否有一个我应该注意的常见用例?

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

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

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

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

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