[Visual Basic 2003~2005開發秘訣與範例大全] 建構函式(Constructor)與解構函式(Destructor)

摘要:建構函式(Constructor)與解構函式(Destructor)

一個類別的建構函式必須使用名為 New 的 Member Function

那為什麼Form1會看不到Sub New() 呢?

那是因為已經由Visual Studio 幫忙建立了,而相關的程式碼會放在  Form1.Designer.vb

而這個檔案預設是被隱藏起來的

必須在方案總管中先點選"顯示所有檔案" 再把Form1展開,就可以看到 (可以參考BillChung的Windows Form Designer)

一般來說,建構函式並不需要帶有參數

但若有需要

可以使用多載(overloading)的方式 宣告一個帶有參數的建構函式(又稱參數型建構函式)

例如:

Public Sub New(ByVal patientName As String, Optional ByVal patientGender As Gender = Gender.NotAvaliable)
        _PatientName = patientName
        _PatientGender = patientGender
    End Sub

 

有句話說: 有借有還再借不難

有建構函式(要求記憶體空間) 當然就要有解構函式 (歸還記憶體空間)

而要使用解構函式 必須繼承 IDisposable 介面 並實作 Dispose

在Dispose函式必須要釋放相關的資源並且呼叫父類別的Dispose函式

依據MSDN對IDisposable的說明:

當不再使用 Managed 物件時,記憶體回收行程會自動釋放配置給該物件的記憶體,然而,不可能預測記憶體回收將在什麼時候發生。此外,記憶體回收行程不知道 Unmanaged 資源,例如,視窗控制代碼 (Window Handle)、開啟檔案和資料流。

將這個介面的 Dispose 方法與記憶體回收行程結合使用可明確地釋放 Unmanaged 資源。不再需要物件時,該物件的消費者可以呼叫這個方法。

 

也就是說

       1. 並非在呼叫Dispose方法之後,使用的記憶體空間就會立即被釋放

       2. 若在程式中有使用Unmanaged資源,在Dispose方法中必須自行針對Unmanaged的資源作相關釋放的處理