| 建構子是用來控制 Class 在建立一個新的 Instance 時所需要做的初始化程序。同樣地,解構子是當 Class 的 Instance 結束時(可能是設定變數為 Nothing)所需要做的程序,如釋放系統資源等等。 在原有的 VB 中,可以利用 Class_Initialize() 和 Class_Terminate() 事件程序(Event Procedure)來初始化或在 Instance 結束時執行。 在 Visual Basic.NET 中改以 Sub New() 和 Sub Destruct() 程序來做建構子與解構子的動作。 Sub New() 方法只會在 Class 建立時執行一次,且除了以同一 Class 其他的建構子或是衍生 Class 的建構子的第一行程式碼呼叫之外,不可以在任何其他地方呼叫使用。且 Sub New() 方法之內的程式碼在執行時,沒有任何該 Class 內的成員已經被建立出來。 .NET 執行環境會在清掉物件時自動呼叫它的 Sub Destruct() 方法,這一個副函數也不可以被呼叫使用。 .NET 執行環境在系統決定該物件不需要存在時﹔會自動清掉該物件。與 Class_Terminate 和 Sub New() 不同的是,你無法確切地知道 .NET 執行環境會何時呼叫 Sub Destruct(),只能確定的是對該物件最後的一個參照(reference)被釋放後,系統會自動呼叫 Sub Destruct()。 |
| ■ 使用 Sub New() 來建立參數化的建構子 -- |
| 要建立一個 class 的建構子可以在 class 定義範圍內的任何地方撰寫 Sub New() 副函數。建構子的第一行程式碼必須是呼叫基礎 Class 的建構子或是同一 Class 內其他的建構子,這保證被繼承的物件會在衍生的物件之前初始化完成。甚至是當你在建立你自己的基礎 class 時,也通常會呼叫 MyBase.New 來初始化更基礎的物件,因為所有的 Class 最終都是繼承自 Object Class。 在呼叫完父物件的建構子後,在 Sub New() 副函數內加上初始化該物件所需要的動作。Sub New() 副函數可以接受參數,如下列的程式碼範例。 |
| ■ 使用 Sub Destruct() 當解構子 -- |
| 要建立 class 的解構子,可以在 class 的定義範圍內任何地方加上 Sub Destruct() 副函數。你可以在該副函數內加上釋放物件,關閉檔案等等工作。 程式碼範例如下 |
| Imports System Namespace MyNamespace Module MyModule Class Truck Private iWheels As Integer Sub New(iInitialWheels As Integer) MyBase.New @#呼叫基礎 Class 的建構子 iWheels=iInitialWheels End Sub Sub Destruct() @#執行一些需要的動作 End Sub Property Wheels As Integer Get Wheels=iWheels End Get Set iWheels = Value End Set End Property End Class Sub Main() Dim t as Truck = New Truck(18) Console.WriteLine("這是一部 {0} 輪大卡車",t.Wheels) Console.Write("請輸入您想要改裝的輪數: ") t.Wheels = CInt(Console.ReadLine()) Console.WriteLine("你已經把它改裝成 " & t.Wheels & " 輪大卡車") End Sub End Module End Namespace |
【我对这篇文章有话说?】
广告位招租,广告代号:content_468_15
上一篇:VB.NET中的类 下一篇:Visual Basic 6/VBScript 與Visual Basic.NET 的比較(中)
- 关于我们 | 广告服务 | 网站建设 | 版权申明 | 申请链接 | 联系我们
- Copyright © 2007 5iaspx.COM. All Right Reserved.
- 本站内容仅供学习,研究,探讨,个人收藏,如有侵权,敬请联系我们,我们尽快解决!
|