[VB.NET] 定義及使用屬性

  • 928
  • 0

摘要:fi

A. Prework

首先, 建立Console Application, 並命名為 EmployeeProperties

然後,建立Class, 並命名為 Employee.vb

 

 

 

 

 

B. Procedure

 

在 Employee.vb, 

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
4.加入以下程式碼,以新增一個名為 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

5.加入以下程式碼,以新增一個名為 Remuneration 的唯讀屬性。 Get 存取子會傳回員工的薪資。此處沒有 Set 存取子,因為薪資不能直接設定;唯一可以變更薪資的方式是呼叫 PayRise 方法。


Public ReadOnly Property Remuneration() As Decimal
   Get
      Return Me.Salary
   End Get
End Property
6.加入以下程式碼,另外新增一個名為 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

 

在 Module1.vb 

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

最後Output