C#之析構函數

定義:

析構函數,是類的一個特殊的成員函數,當類的對象超出范圍時執行。
簡單來講,析構函數,是用來幫助我們來進行廢棄對象的內存回收的機制。

語法:
    ~類名()
    {

    }

示例:

class Car 
{ 
       ~Car() //析構函數
       {
//.......
       }
}
注意點:

1.只能對類使用析構函數。
2.一個類只能有一個析構函數。
3.無法繼承或重載析構函數。
4.無法調用析構函數。 它們是被自動調用的。
5.析構函數既沒有修飾符,也沒有參數。
6.不應使用空析構函數。 如果析構函數為空,只會導致不必要的性能損失。

作用:

程序員無法控制何時調用析構函數,因為這是由垃圾回收器決定的。 垃圾回收器檢查是否存在應用程序不再使用的對象。 如果垃圾回收器認為某個對象符合析構,則調用析構函數(如果有)并回收用來存儲此對象的內存。 程序退出時也會調用析構函數。
通常,與運行時不進行垃圾回收的開發語言相比,C# 無需太多的內存管理。 這是因為 .NET Framework 垃圾回收器會隱式地管理對象的內存分配和釋放。 但是,當應用程序封裝窗口、文件和網絡連接這類非托管資源時,應當使用析構函數釋放這些資源。 當對象符合析構時,垃圾回收器將運行對象的Finalize方法。

繼承鏈中析構函數的釋放順序
        class First
        {
            ~First()
            {
                Console.WriteLine("First's destructor is called.");
            }
        }

        class Second : First
        {
            ~Second()
            {
                Console.WriteLine("Second's destructor is called.");
            }
        }

        class Third : Second
        {
            ~Third()
            {
               Console.WriteLine("Third's destructor is called.");
            }
        }

        class TestDestructors
        {
            static void Main()
            {
                Third t = new Third();
            }

        }
        /* Output :
            Third's destructor is called.
            Second's destructor is called.
            First's destructor is called.
        */
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容