共用方式為


如何:建立屬性 (Visual Basic)

您可以在 Property 陳述式與 End Property 陳述式之間括住屬性 (property) 定義。 在此定義內,您可以定義 Get 程序、Set 程序或這兩個。 所有屬性的程式碼都位於這些程序內。

Get 程序會擷取屬性的值,而 Set 程序則會儲存值。 如果您希望屬性具有讀寫權限,則必須定義這兩個程序。 對於唯讀屬性,您僅需定義 Get,而對於唯寫屬性,您僅需定義 Set

若要建立屬性

  1. 在任何屬性或程序之外,使用 Property 陳述式,後面接著 End Property 陳述式。

  2. 如果屬性採用參數,請在 Property 關鍵字後面加上程序的名稱,然後以括弧括住參數清單。

  3. 在括號內跟著一個 As 子句,以指定屬性值的資料類型。 甚至對於唯寫的屬性,您也必須指定資料類型。

  4. 視需要新增 GetSet 程序。 請參閱下列指示。

若要建立一個擷取屬性值的 Get 程序

  1. PropertyEnd Property 陳述式之間,撰寫一個 Get 陳述式,後面接著 End Get 陳述式。 您不需要為 Get 程序定義任何的參數。

  2. 將要擷取屬性值的程式碼陳述式放置在 GetEnd Get 陳述式之間。 除了產生和傳回屬性的值之外,此程式碼還可以包括其他的計算和資料操作。

  3. 使用 Return 陳述式來將屬性的值傳回給呼叫程式碼。

您必須針對讀寫屬性和唯讀屬性撰寫一個 Get 程序。 您不得針對唯寫屬性定義一個 Get 程序。

若要建立一個寫入屬性值的 Set 程序

  1. PropertyEnd Property 陳述式之間,撰寫一個 Set 陳述式,後面接著 End Set 陳述式。

  2. Set 陳述式中,可以選擇在 Set 關鍵字後面加上一個帶括號的參數清單。 如果參數清單不存在或是空的,則會定義一個名為 Value 的隱含參數,其類型為該屬性本身的類型。 如果參數清單不是空的,您可以在適當的情況下使用不同的名稱,但該參數必須與該屬性本身具有相同的資料類型。

  3. 將要儲存屬性中的值的程式碼陳述式放置在 SetEnd Set 陳述式之間。 除了驗證和儲存屬性的值之外,此程式碼還可以包括其他的計算和資料操作。

  4. 使用 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)

另請參閱