首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 建構函式與解構函式用法 (3):解構函式與垃圾收集器運作

     編輯:關於C語言

三、解構函式與垃圾收集器在 C# 中的運用

解構函式為實現銷毀類別實例的方法成員。無參數、無修飾詞、不可被呼叫。因目的與建構函式相反,加前綴 ~ 區別。

雖 C# (CLR) 提供自動記憶體管理機制,資源釋放可由「垃圾收集器」自動完成,一般不需使用者干預,但特殊情況仍需解構函式,如非受控資源釋放。

資源釋放注意事項

  1. 值型別與參考型別參考不需垃圾收集器釋放記憶體,離開作用域自動釋放(儲存在堆疊)。
  2. 只有參考型別參考指向的物件實例儲存在堆積,堆積為自由儲存空間無生存期(堆疊元素彈出生存期結束)。垃圾收集器僅對堆積區域起作用。

非受控資源必須手動釋放

需釋放非受控資源時,必須寫代碼解決。通常在解構函式中放入釋放非受控資源代碼段。若類別未使用非受控資源,絕對不要定義解構函式——物件執行解構函式時,垃圾收集器釋放受控資源前必先呼叫解構函式,再第二次才真正釋放受控資源,兩次刪除動作花費遠大於一次。

解構函式使用範例

public class ResourceHolder
{
    ~ResourceHolder()
    {
        // 這裡是清理非受控資源的使用者代碼段
    }
}

四、小結

建構函式與解構函式雖形式簡單,但使用決非表面那麼簡單。靈活正確使用能幫助更好理解 CLR 記憶體管理機制,更好管理系統資源。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved