C#:如何在自定义类中添加析构函数?

时间:2009-01-28 08:01:06

标签: c#

如何在C#中定制的类中添加析构函数,以便在不再需要时将其销毁?

6 个答案:

答案 0 :(得分:6)

阅读this

但您可以考虑实施IDisposable,它通常提供更优雅的解决方案。转到here了解更多信息。

答案 1 :(得分:5)

不要使用析构函数。 改为使用Dispose()和Finalize()。

这是一篇关于这个主题的非常好的文章:When and How to Use Dispose and Finalize in C#

答案 2 :(得分:1)

析构函数不用于销毁对象,用于在销毁对象时清理已使用的资源。析构函数通常用于清理任何非托管资源,例如使用Interop / p / invoke时。

class Person
{
    // Destructor
    ~Person()
    {
        // Cleanup resources that the object used here.
    }
}

答案 3 :(得分:1)

要小心!!!你应该尽量避免在C#中使用析构函数。

当你的代码是:


class Person
{
    // Destructor
    ~Person()
    {
        // Clean-up resources that the object used here.
    }
}

编译器正在为您生成此代码:


class Person
{
    // Destructor
    public override void Finalize()
    {
        // your clean up
        base.Finalize();

    }
}

正如您所看到的,您只是在实施Finalize方法。在.Net平台中,Finalize方法的错误实现会使您的应用程序出现内存泄漏,如果正确实现,则使用Finalize方法实现的对象需要释放2个GC调用。

如果你来自C ++,你应该忘记一个析构函数的想法,你不需要它们GC应该照顾你正常的类。

答案 4 :(得分:0)

以下是一个例子:

class Car
{
    ~Car()  // destructor
    {
        // cleanup statements...
    }
}

有关MSDN的更多信息。

答案 5 :(得分:0)

~className(){}