當一個對象被銷毀時,Sub Destruct方法被系統自動調用,但不能被顯式調用。.NEt框架能夠在系統自認為一個對象並沒有使用價值的時候把該對象銷毀。但是切記,不象Class+Terminate和Sub New那樣,系統將會在上一次引用一個對象之後調用Sub Destruct這個方法。
1.帶參數的Sub New的構造函數
用戶可以通過在類的定義的任何地方定義Sub New過程來實現對類的構造函數。構造函數的第一行必須是調用它的基本類的構造函數或者是當前類的其他構造函數。用戶必須確認基本類是在其他的類的初始化過程之前初始化的。但是令人驚訝的是,即使創建基本類,用戶也必須調用構造函數Mybase.New,因為所有的類都是最終從一個名為Object的類繼承而來的。在調用它的父類的構造函數以後,用戶可以在Sub New過程中加入一些另外的初始化的代碼。Sub New可以支持帶參數的構造函數,這些參數通過調用構造函數時,從過程中傳入的,例如:
Dim t as truck=New Truck(18)
2.使用Sub Destruct作為析構函數
為了建立一個類的析構函數,用戶可以建立一個名為Sub Destruct的過程,並且可以入在類的定義的任何地方,在析構函數中寫入的代碼可以用來釋放其他的對象,關閉一個文件或者做其他的結束工作。下面的例子說明了怎樣通過一個帶參數的構造函數建立一個類,並且初始化一個屬性。
Imports System Namespace TruckNamespace Module Module1 Class Truck Private iWheels as Integer Sub New(initialWheels as integer) MyBase.New iWheels=initialWheels End Sub Sub Destruct() 'Place cleanup code here End Sub Property Wheels as Integer Get Wheels=iWheels End Get Set iWheels=Value End Set End Property End Class shared sub Main() Dim t as truck=New Truck(18) Console.WriteLine("The truck has"&_ t.wheels&"wheels when initialized") End Sub End Module