如何调用析构函数[重复]

Posted

技术标签:

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

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

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

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

【问题讨论】:

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

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

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

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

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

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

【讨论】:

【参考方案2】:

你可以看看Destructor Microsoft docs。

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

【讨论】:

问题是怎么称呼,不是现在定义。

以上是关于如何调用析构函数[重复]的主要内容,如果未能解决你的问题,请参考以下文章

C ++中的析构函数调用顺序[重复]

构造函数和析构函数中的虚函数调用[重复]

检查指针在析构函数中不为空[重复]

为啥自动对象的析构函数被调用两次?

如何调用类析构函数/构造函数

unity c#怎么调用析构函数