類別階層架構中的 New 和 Finalize 方法如何運作

更新:2007 年 11 月

當類別的執行個體 (Instance) 建立時,Common Language Runtime (CLR) 會嘗試執行名為 New 的程序 (如果該物件中有此程序)。New 是一種名為 constructor 的程序型別,在物件中執行任何程式碼之前,可用來初始化新的物件。New 建構函式可用來開啟檔案、連接至資料庫、初始化變數以及處理使用物件之前必須完成的任何其他工作。

當建立衍生類別的執行個體時,會先執行基底類別的 Sub New 建構函式,接著執行衍生類別中的建構函式。因為 Sub New 建構函式 (Constructor) 中的第一行程式碼,會使用 MyBase.New() 語法來呼叫類別 (Class) 階層架構中緊接其上的類別建構函式,所以會產生前面的作業。然後,針對類別階層架構中的每個類別來呼叫 Sub New 建構函式,直到達到基底類別的建構函式。這時,會執行基底類別建構函式中的程式碼,接著執行所有衍生類別中每個建構函式中的程式碼,最後執行最高衍生類別中的程式碼。

建構函式和繼承

當不再需要物件時,CLR 會先呼叫該物件的 Finalize 方法,之後才會釋放其記憶體。Finalize 方法稱為 destructor,因為它執行如儲存狀態資訊、關閉檔案和連接至資料庫的清除工作,而且在釋放物件前必須完成的其他工作。

建構函式和繼承 2

請參閱

概念

物件存留期:物件的建立和終結