HOW TO:建立屬性 (Visual Basic)
透過封入 Property 陳述式 (Statement) 與 End Property 陳述式來定義屬性。 在這個定義內,可定義 Get 程序和 (或) Set 程序。 所有屬性程式碼都落在這些程序內。
Get 程序會擷取屬性值,而 Set 程序會儲存值。 如果想要屬性具有讀取/寫入存取權,則必須定義這兩個程序。 若為唯讀屬性,則只定義 Get,而若為唯寫屬性,則只定義 Set。
若要建立屬性
在任何屬性或程序外部,使用後面緊接 End Property 陳述式的 Property 陳述式。
如果屬性採用參數,請在 Property 關鍵字後面緊接著程序名稱,然後是以括弧括住的參數清單。
在括弧後面緊接著 As 子句,以指定屬性值的資料型別。 即使是唯寫屬性,也必須指定資料型別。
適當地加入 Get 和 Set 程序。 請參閱下列指示。
若要建立用來擷取屬性值的 Get 程序
在 Property 與 End Property 陳述式之間,寫入 Get 陳述式,後面緊接 End Get 陳述式。 您不需要定義 Get 程序的任何參數。
放置程式碼陳述式,以擷取 Get 和 End Get 陳述式間的屬性值。 除了產生和傳回屬性值外,這個程式碼可包含其他計算和資料操作。
使用 Return 陳述式,將屬性值傳回給呼叫程式碼。
對於讀寫屬性和唯讀屬性,您必須撰寫 Get 程序。 對於唯寫屬性,則不得定義 Get 程序。
若要建立用來寫入屬性值的 Set 程序
在 Property 與 End Property 陳述式之間,寫入 Set 陳述式 (Visual Basic),後面緊接 End Set 陳述式。
在 Set 陳述式中,請在 Set 關鍵字後面緊接著以括弧括住的參數清單。 這個參數清單至少必須包含呼叫程式碼所傳遞之值的值參數。 這個值參數的預設名稱是 Value,但可視情況使用不同的名稱。 值參數的資料型別必須與屬性本身相同。
放置程式碼陳述式,以將值儲存在 Set 與 End Set 陳述式間的屬性中。 除了驗證和儲存屬性值外,這個程式碼可包含其他計算和資料操作。
使用值參數來接受 (Accept) 呼叫程式碼所提供的值。 您可直接將這個值儲存在指派陳述式 (Assignment Statement) 中,或將它用於運算式中,以計算所要儲存的內部值。
對於讀寫屬性和唯寫屬性,您必須撰寫 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)
請參閱
工作
HOW TO:宣告混合存取層級的屬性 (Visual Basic)
HOW TO:在 Visual Basic 中宣告及呼叫預設屬性