您目前已離線,請等候您的網際網路重新連線

HOW TO: 在 Visual Basic .NET 中定義及使用屬性

本文曾發行於 CHT308230
結論
許多物件導向程式語言的主要目的,都是要讓您能將內部細節封裝在類別之中。Visual Basic .NET 允許您定義屬性,來控制對類別中內部細節的存取。本文將告訴您如何在 Visual Basic .NET 應用程式中定義及使用屬性。

屬性可以是唯讀、唯寫,或是可讀寫。Get存取子可提供讀取存取權,Set存取子則提供寫入存取權。您可以在這些存取子中加入程式碼,以提供適當的功能來取得或設定屬性。

在本文中,您會建立一個名為Employee的類別。在這個類別內,您為員工姓名定義了一個讀寫屬性、一個可讀取員工薪資的屬性,以及可計算員工年資的屬性。然後在應用程式中建立一個Employee物件來使用其屬性。

回到頁首

基本需求

下面清單提列了建議使用的硬體、軟體、網路基礎架構以及所需安裝的 Service Pack:
  • Microsoft Visual Studio .NET
本文件同時也假設您已十分熟悉下列主題:
  • Visual Basic .NET 語法
  • 物件導向基本概念
回到頁首

建立含有 Visual Basic .NET 類別的應用程式

  1. 啟動 Visual Studio .NET,然後新建一個名為 EmployeeProperties 的 Visual Basic .NET 主控台應用程式專案。
  2. [專案]功能表上,按一下[加入類別]。在[加入新項目]對話方塊的[名稱]文字方塊中鍵入Employee.vb,再按一下[開啟]
  3. 在 [程式碼檢視] 視窗中檢視新類別的程式碼。
回到頁首

定義欄位、建構函式及方法

  1. Employee類別中新增三個Private欄位,如下所示:
    Private Name As StringPrivate Salary As DecimalPrivate HireDate As DateTime
  2. 為此類別定義一個建構函式,以初始化Employee類別中的欄位,如下所示:
    Public Sub New(ByVal Name As String, _               ByVal Salary As Decimal, _               ByVal HireDate As DateTime)   Me.Name = Name   Me.Salary = Salary   Me.HireDate = HireDateEnd Sub
  3. 在類別中新增一個Public方法,如下所示:
    Public Sub PayRise(ByVal Amount As Decimal)   Me.Salary += AmountEnd Sub
回到頁首

在類別中定義屬性

  1. 加入以下程式碼,以新增一個名為FullName的可讀寫屬性。Get存取子會傳回員工姓名。Set存取子會使用傳入Set存取子的Value參數來設定員工姓名。
    Public Property FullName() As String   Get      Return Me.Name   End Get   Set(ByVal Value As String)      Me.Name = Value   End SetEnd Property
  2. 加入以下程式碼,以新增一個名為Remuneration的唯讀屬性。Get存取子會傳回員工的薪資。此處沒有Set存取子,因為薪資不能直接設定;唯一可以變更薪資的方式是呼叫PayRise方法。
    Public ReadOnly Property Remuneration() As Decimal   Get      Return Me.Salary   End GetEnd Property
  3. 加入以下程式碼,另外新增一個名為DaysSinceJoined的唯讀屬性。Get存取子會算出員工的年資。
    Public ReadOnly Property DaysSinceJoined() As Integer   Get      Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)      return timespan.Days   End GetEnd Property
回到頁首

建立物件及使用屬性

  1. 在 [程式碼檢視] 視窗中顯示 Module1.vb 的程式碼。
  2. Main方法中使用New運算子以建立一個Employee物件。將物件參考指派至本機Employee變數,如下所示:
    Dim worker As New Employee( "Jayne Doe", _                             125000, _                             New DateTime(1998, 7, 31) )
  3. 加入以下程式碼,以變更員工的FullName屬性。這會進一步叫用FullName屬性的Set存取子。
    worker.FullName = "Jayne Lafayette"
  4. 加入以下程式碼,利用FullNameRemunerationDaysSinceJoined等屬性的Get存取子來顯示員工的詳細資料:
    Console.WriteLine("Full name: " & worker.FullName)Console.WriteLine("Remuneration: " & worker.Remuneration)Console.WriteLine("Days since joined: " & worker.DaysSinceJoined)
回到頁首

測試應用程式

  1. 建置並執行此應用程式。
  2. 應用程式會在主控台中顯示以下資訊 (Days since joined 的值視目前日期而定):
    Full name: Jayne LafayetteRemuneration: 125000Days since joined: 1139
  3. 回到 [程式碼檢視] 視窗中的 Module1.vb 檔,並在您的Main方法尾端加入以下程式碼:
    worker.Remuneration = 1000000
  4. 嘗試建置此應用程式。您會收到一個編譯錯誤,因為Remuneration是一個唯讀屬性。
  5. 將陳述式變更如下:
    worker.Salary = 1000000
  6. 再次嘗試建置此應用程式。您會收到另一個編譯錯誤,因為Salary欄位是標示為Private。唯一能夠修改員工薪資的方法,是使用公用的 (Public)PayRise方法。
回到頁首
参考
本文件是根據 Microsoft Knowledge Base 文件編號 Q308230 翻譯的。若要參考原始英文文件內容,請至以下網址:

內容

文章識別碼:308230 - 最後檢閱時間:03/26/2002 14:39:00 - 修訂: 1.0

  • Microsoft Visual Basic .NET 2002 Standard Edition
  • kbhowto kbhowtomaster KB308230
意見反應