您會將屬性定義放在 Property 語句和 End Property 語句之間。 在此定義中,您會定義 Get 程式、 Set 程式或兩者。 所有屬性的程式代碼都位於這些程式內。
程式 Get 會擷取屬性的值,而程式會 Set 儲存值。 如果您想要讓 屬性具有讀取/寫入存取權,則必須定義這兩個程式。 若為唯寫屬性,您只會 Get定義,而針對唯寫屬性,則只會 Set定義 。
若要建立屬性
在任何屬性或程式之外,請使用 Property Statement,後面接著
End Property語句。如果屬性接受參數,請遵循
Property關鍵詞並加上程式的名稱,然後以括弧括起參數清單。遵循括號後添加
As子句,以指定屬性值的資料類型。 您甚至可以為唯寫屬性指定數據類型。視需要新增
Get和Set程式。 請參閱下列指示。
建立擷取屬性值的 Get 程式
在
Property和End Property語句之間,撰寫 Get 語句,後面接著End Get語句。 您不需要為Get程式定義任何參數。放置程式代碼語句,以擷取 和
Get語句之間的End Get屬性值。 除了產生和傳回屬性的值之外,此程式碼還可以包含其他計算和數據操作。Return使用語句,將 屬性的值傳回呼叫端程序代碼。
您必須為讀寫屬性和唯讀屬性編寫 Get 程序。 您不得為唯寫的屬性定義 Get 程序。
建立寫入屬性值的 Set 程式
在
Property和End Property語句之間,撰寫 Set 語句,後面接著End Set語句。在
Set語句中,可選擇在Set關鍵詞後面加上括號內的參數列表。 如果參數清單不存在或空白,則會定義名為Value的隱含參數,其類型為屬性本身的類型。 如果參數清單不是空的,您可以適當地使用不同的名稱,但參數必須與屬性本身具有相同的數據類型。將程式代碼語句放在和
Set語句之間的End Set屬性中儲存值。 除了驗證和儲存屬性的值之外,此程式碼還可以包括其他計算和數據處理。使用 value 參數來接受呼叫程式代碼所提供的值。 您可以直接將此值儲存在指派語句中,或在表達式中使用它來計算要儲存的內部值。
您必須為讀寫屬性和唯寫屬性撰寫 Set 程式。 您不得為唯讀屬性定義 Set 程序。
範例
下列範例會建立讀取/寫入屬性,將完整名稱儲存為兩個組成名稱、名字和姓氏。 當呼叫程式代碼讀取 fullName時,程式 Get 會結合這兩個組成名稱,並傳回完整名稱。 當呼叫程式代碼指派新的完整名稱時,程式 Set 會嘗試將它分成兩個組成名稱。 如果找不到空格,則會將其全部儲存為名字。
Dim firstName, lastName As String
Property fullName() As String
Get
If lastName = "" Then
Return firstName
Else
Return firstName & " " & lastName
End If
End Get
Set(ByVal Value As String)
Dim space As Integer = Value.IndexOf(" ")
If space < 0 Then
firstName = Value
lastName = ""
Else
firstName = Value.Substring(0, space)
lastName = Value.Substring(space + 1)
End If
End Set
End Property
以下範例顯示對 fullName 的屬性程序的一般呼叫。 第一個呼叫會設定 屬性值,而第二個呼叫會擷取它。
fullName = "MyFirstName MyLastName"
MsgBox(fullName)