【问题标题】:How to call Destructor [duplicate]如何调用析构函数[重复]
【发布时间】:2017-01-30 18:28:27
【问题描述】:

我知道当不再使用对象时,垃圾收集器会调用析构函数。 但是我想知道

如何通过c#代码调用析构函数?

如果可能,请举一些基本的例子来帮助理解。

【问题讨论】:

  • 你有没有费心去谷歌这个?
  • 你认为为什么需要调用析构函数?
  • 您几乎肯定不需要拥有终结器(C# 没有析构函数,只有终结器),更不用说手动调用它了。你几乎肯定应该只有一个Dispose 方法,并且你应该手动调用那个
  • 另一种选择是将其包装在 using 语句中,以便自动处理

标签: c# .net c#-4.0 c#-3.0 c#-2.0


【解决方案1】:

您不会在 .NET 中调用析构函数 托管堆仅由 CLR 和 CLR 处理。

但是,您可以为类定义析构函数,一旦对象被 GC 收集,就会调用析构函数

class Foo
    {
        public Foo()
        {
            Console.WriteLine("Constructed");
        }

        ~Foo()
        {
            Console.WriteLine("Destructed");
        }
    }

请注意,析构函数前面没有(也不能)有公共修饰符,这有点暗示您不能显式调用对象的析构函数。

【讨论】:

    【解决方案2】:

    你可以看看Destructor Microsoft docs

    您需要声明一个与类名同名但带有前导“~”符号的函数。

    【讨论】:

    • 问题是怎么称呼,不是现在定义。
    猜你喜欢
    • 1970-01-01
    • 2021-10-20
    • 2013-09-06
    • 2019-06-07
    • 2014-06-25
    • 2014-05-17
    • 2021-07-28
    • 1970-01-01
    • 2013-04-17
    相关资源
    最近更新 更多