Property 陳述式

宣告屬性的名稱,以及用來儲存和擷取屬性值的屬性程序。

[ <attributelist> ] [ Default ] [ accessmodifier ] 
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] [ Iterator ]
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]
    [ <attributelist> ] [ accessmodifier ] Get
        [ statements ]
    End Get
    [ <attributelist> ] [ accessmodifier ] Set ( ByVal value As returntype [, parameterlist ] )
        [ statements ]
    End Set
End Property
- or -
[ <attributelist> ] [ Default ] [ accessmodifier ] 
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] 
Property name ( [ parameterlist ] ) [ As returntype ] [ Implements implementslist ]

組件

詞彙

定義

attributelist

選擇項。 套用至這個屬性 (Property) 或是 Get 或 Set 程序的屬性 (Attribute) 清單。 請參閱屬性清單

Default

選擇項。 指定這個屬性是定義類別或結構的預設屬性。 預設屬性 (Property) 必須接受 (Accept) 參數,而且不需指定屬性 (Property) 名稱就可加以設定和擷取。 如果您將屬性宣告為 Default,就無法在該屬性或屬性程序上使用 Private。

accessmodifier

在 Property 陳述式與其中最多一個 Get 和 Set 陳述式上,它是選擇項。 可以是下列其中一項:

請參閱 Visual Basic 中的存取層級

propertymodifiers

選擇項。 可以是下列其中一項:

Shared

選擇項。 請參閱 Shared (Visual Basic)

Shadows

選擇項。 請參閱 Shadows (Visual Basic)

ReadOnly

選擇項。 請參閱 ReadOnly (Visual Basic)

WriteOnly

選擇項。 請參閱 WriteOnly (Visual Basic)

Iterator

選擇項。 請參閱 Iterator

name

必要項。 屬性的名稱。 請參閱 宣告項目名稱 (Visual Basic)

parameterlist

選擇項。 區域變數名稱清單,代表這個屬性的參數,以及 Set 程序可能會使用的其他參數。 請參閱 參數清單 (Visual Basic)

returntype

如果 Option Strict 為 On,則為必要項。 這個屬性所傳回值的資料型別。

Implements

選擇項。 指出這個屬性會實作一個或多個屬性,而每一個都已在由這個屬性之包含類別或結構所實作的介面中定義。 請參閱 Implements 陳述式

implementslist

如果提供 Implements,則為必要項。 要實作的屬性清單。

implementedproperty [ , implementedproperty ... ]

每個 implementedproperty 都具有下列語法和組成部分:

interface.definedname

組件描述
interface 必要項。由這個屬性之包含類別或結構所實作的介面名稱。
definedname 必要項。在 interface 中定義屬性時所使用的名稱。

Get

選擇項。 如果屬性標記為 WriteOnly 則為必要項。 會啟動用來傳回屬性值的 Get 屬性程序。

statements

選擇項。 要在 Get 或 Set 程序內執行的陳述式區塊。

End Get

結束 Get 屬性程序。

Set

選擇項。 如果屬性標記為 ReadOnly 則為必要項。 會啟動用來儲存屬性值的 Set 屬性程序。

End Set

結束 Set 屬性程序。

End Property

結束這個屬性的定義。

備註

Property 陳述式引入屬性宣告。 一個屬性可以有一個 Get 程序 (唯讀)、一個 Set 程序 (唯寫),或兩者皆有 (可讀寫)。 使用自動實作屬性時,可以省略 Get 和 Set 程序。 如需詳細資訊,請參閱 自動實作的屬性 (Visual Basic)

您只能在類別層級使用 Property。 這表示屬性的「宣告內容」必須是類別、結構、模組或介面,且不能是原始程式檔 (Source File)、命名空間 (Namespace)、程序或區塊。 如需詳細資訊,請參閱宣告內容和預設存取層級 (Visual Basic)

根據預設,屬性會使用公用存取。 您可以在 Property 陳述式中使用存取修飾詞,調整屬性的存取層級,也可以選擇性地將它的其中一個屬性程序,調整為更嚴格的存取層級。

Visual Basic 在屬性指派期間會將參數傳遞至 Set 程序。 如果未提供 Set 的參數,則整合式開發環境 (IDE) 會使用名為 value 的隱含參數。 這個參數含有要指派給屬性的值。 通常會將這個值儲存在私用區域變數中,每當呼叫 Get 程序時就會傳回它。

規則

  • 混合存取層級如果您要定義 read-write 屬性,可以選擇指定 Get 或 Set 程序的不同存取層級,但不可同時指定這兩者。 如果您這樣做,程序的存取層級必須比屬性的存取層級更嚴格。 例如,如果屬性已宣告為 Friend,則您可以將 Set 程序宣告為 Private,但不能宣告為 Public。

    如果您要定義 ReadOnly 或 WriteOnly 屬性,則單一屬性程序 (分別是 Get 或 Set) 即代表整個屬性。 如果為這類程序宣告不同的存取層級,則會為屬性設定兩種存取層級,因此您不能這樣做。

  • 傳回型別:Property 陳述式可以宣告它所傳回之值的資料型別。 您可以指定任何資料型別,或列舉型別、結構、類別或介面的名稱。

    如果未指定 returntype,則屬性會傳回 Object。

  • 實作如果這個屬性會使用 Implements 關鍵字,則包容此屬性之類別或結構的 Class 或 Structure 陳述式後面必須緊接著 Implements 陳述式。 Implements 陳述式必須包含 implementslist 中指定的每個介面。 不過,介面在定義 Property 時所使用的名稱 (在 definedname 中) 不必和這個屬性的名稱 (在 name 中) 相同。

行為

  • 從屬性程序傳回當 Get 或 Set 程序回到呼叫程式碼後,程式碼會繼續執行叫用該程序之陳述式後面的陳述式。

    Exit Property 和 Return 陳述式會造成立即退出屬性程序。 任意數目的 Exit Property 和 Return 陳述式可以出現在程序中的任何地方,並且 Exit Property 和 Return 陳述式可以混合使用。

  • 傳回值若要從 Get 程序傳回值,可以將值指派給屬性名稱,或是將值包含在 Return 陳述式中。 下列範例會將傳回值指派給屬性名稱 quoteForTheDay,然後使用 Exit Property 陳述式返回。

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property quoteForTheDay() As String
        Get
            quoteForTheDay = quoteValue
            Exit Property
        End Get
    End Property
    

    如果您使用 Exit Property 而沒有將值指派給 name,則 Get 程序會針對屬性的資料型別傳回預設值。

    Return 陳述式會同時指派 Get 程序傳回值並結束程序。 以下範例說明這點。

    Private quoteValue As String = "No quote assigned yet."
    
    ReadOnly Property quoteForTheDay() As String
        Get
            Return quoteValue
        End Get
    End Property
    

範例

以下範例將宣告類別中的屬性 (Property)。

Class Class1
    ' Define a local variable to store the property value.
    Private propertyValue As String
    ' Define the property.
    Public Property prop1() As String
        Get
            ' The Get property procedure is called when the value
            ' of a property is retrieved.
            Return propertyValue
        End Get
        Set(ByVal value As String)
            ' The Set property procedure is called when the value 
            ' of a property is modified.  The value to be assigned
            ' is passed in the argument to Set.
            propertyValue = value
        End Set
    End Property
End Class

請參閱

參考

Get 陳述式

Set 陳述式 (Visual Basic)

參數清單 (Visual Basic)

Default (Visual Basic)

概念

自動實作的屬性 (Visual Basic)

其他資源

Visual Basic 中的物件和類別