Share via


Property 陳述式

更新:2007 年 11 月

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

[ <attributelist> ] [ Default ] [ accessmodifier ] 
[ propertymodifiers ] [ Shared ] [ Shadows ] [ ReadOnly | WriteOnly ] 
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

參數

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

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

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

    請參閱 Visual Basic 中的存取層級

  • propertymodifiers
    選擇項,可以是下列其中一項:

  • Shared
    選擇項,請參閱 Shared (Visual Basic)

  • Shadows
    選擇項,請參閱 Shadows

  • ReadOnly
    選擇項,請參閱 ReadOnly (Visual Basic)

  • WriteOnly
    選擇項,請參閱 WriteOnly

  • name
    必要項,屬性名稱。請參閱宣告項目名稱

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

  • returntype
    如果 OptionStrict 為 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 程序 (唯寫),或兩者皆有 (可讀寫)。

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

根據預設,屬性會使用公用存取。您可以在 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

請參閱

工作

HOW TO:將欄位和屬性加入至類別

概念

預設屬性

參考

Get 陳述式

Set 陳述式 (Visual Basic)

參數清單