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

文章翻譯 文章翻譯
文章編號: 308230 - 檢視此文章適用的產品。
本文曾發行於 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 String
    Private Salary As Decimal
    Private 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 = HireDate
    End Sub
  3. 在類別中新增一個 Public 方法,如下所示:
    Public Sub PayRise(ByVal Amount As Decimal)
       Me.Salary += Amount
    End 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 Set
    End Property
  2. 加入以下程式碼,以新增一個名為 Remuneration 的唯讀屬性。 Get 存取子會傳回員工的薪資。此處沒有 Set 存取子,因為薪資不能直接設定;唯一可以變更薪資的方式是呼叫 PayRise 方法。
    Public ReadOnly Property Remuneration() As Decimal
       Get
          Return Me.Salary
       End Get
    End Property
  3. 加入以下程式碼,另外新增一個名為 DaysSinceJoined 的唯讀屬性。 Get 存取子會算出員工的年資。
    Public ReadOnly Property DaysSinceJoined() As Integer
       Get
          Dim timespan As TimeSpan = DateTime.Now.Subtract(Me.HireDate)
          return timespan.Days
       End Get
    End 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. 加入以下程式碼,利用 FullName Remuneration DaysSinceJoined 等屬性的 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 Lafayette
    Remuneration: 125000
    Days 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 翻譯的。若要參考原始英文文件內容,請至以下網址:

http://support.microsoft.com/support/kb/articles/Q308/2/30.asp

屬性

文章編號: 308230 - 上次校閱: 2002年3月26日 - 版次: 1.0
這篇文章中的資訊適用於:
  • Microsoft Visual Basic .NET 2002 Standard Edition
關鍵字:?
kbhowto kbhowtomaster KB308230
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com