簡體   English   中英

C#:如何在自定義類中添加析構函數?

[英]C#: How do you add a destructor to a custom made class?

如何在C#中定制的類中添加析構函數,以便在不再需要時將其銷毀?

這個

但您可以考慮實施IDisposable,它通常提供更優雅的解決方案。 到這里獲取更多信息。

不要使用析構函數。 請改用Dispose()和Finalize()。

這是關於這個主題的一篇非常好的文章: 何時以及如何在C#中使用Dispose和Finalize

析構函數不用於銷毀對象,用於在銷毀對象時清理已使用的資源。 析構函數通常用於清理任何非托管資源,例如使用Interop / p / invoke時。

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

要小心!!! 您應盡量避免在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應該照顧你正常的類。

這是一個例子:

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

有關MSDN的更多信息。

~className(){}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM