定義:
析構函數,是類的一個特殊的成員函數,當類的對象超出范圍時執行。
簡單來講,析構函數,是用來幫助我們來進行廢棄對象的內存回收的機制。
語法:
~類名()
{
}
示例:
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.
*/