如何:建立屬性 (Visual Basic)
您可以在 Property
陳述式與 End Property
陳述式之間括住屬性 (property) 定義。 在此定義內,您可以定義 Get
程序、Set
程序或這兩個。 所有屬性的程式碼都位於這些程序內。
Get
程序會擷取屬性的值,而 Set
程序則會儲存值。 如果您希望屬性具有讀寫權限,則必須定義這兩個程序。 對於唯讀屬性,您僅需定義 Get
,而對於唯寫屬性,您僅需定義 Set
。
若要建立屬性
在任何屬性或程序之外,使用 Property 陳述式,後面接著
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)