Property Statement
宣告屬性的名稱,以及用來儲存及擷取屬性值的屬性程序。
語法
[ <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
選擇性。 指定此屬性是其定義所在類別或結構的預設屬性。 預設屬性必須接受參數,且可以進行設定和擷取,而不需要指定屬性名稱。 如果您將屬性宣告為
Default
,則無法在屬性或其任一屬性程序上使用Private
。accessmodifier
在
Property
陳述式上和最多其中一個Get
和Set
陳述式上是選擇性的。 可以是下列其中一項:propertymodifiers
選擇性。 可以是下列其中一項:
MustOverride Overrides
NotOverridable Overrides
Shared
選擇性。 請參閱 Shared。
Shadows
選擇性。 請參閱 Shadows。
ReadOnly
選擇性。 請參閱 ReadOnly。
WriteOnly
選擇性。 請參閱 WriteOnly。
Iterator
選擇性。 請參閱迭代器。
name
必要。 屬性的名稱。 請參閱 Declared Element Names。
parameterlist
選擇性。 區域變數名稱清單,代表此屬性的參數,也可能代表
Set
程序的其他參數。 請參閱參數清單。returntype
如果
Option Strict
為On
,則為必要項。 此屬性所傳回值的資料類型。Implements
選擇性。 表示此屬性會實作一或多個屬性,每個屬性都會在此屬性包含類別或結構所實作的介面中定義。 請參閱 Implements 陳述式。
implementslist
如果使用
Implements
,則為必要項。 所正在實作的屬性清單。implementedproperty [ , implementedproperty ... ]
每個
implementedproperty
都具有下列語法和組件:interface.definedname
部分 描述 interface
必要。 此屬性包含類別或結構所實作的介面名稱。 definedname
必要。 用來在 interface
中定義屬性的名稱。Get
選擇性。 如果屬性標示為
ReadOnly
,則為必要項。 啟動用來傳回屬性值的Get
屬性程序。Get
語句不會與自動實作的屬性搭配使用。statements
選擇性。 要在
Get
或Set
程序中執行的陳述式區塊。End Get
終止
Get
屬性程序。Set
選擇性。 如果屬性標示為
WriteOnly
,則為必要項。 啟動用來儲存屬性值的Set
屬性程序。Set
語句不會與自動實作的屬性搭配使用。End Set
終止
Set
屬性程序。End Property
終止此屬性的定義。
備註
Property
陳述式引進屬性的宣告。 屬性可以有 Get
程序 (唯讀)、Set
程序 (唯寫),或兩者皆有 (讀寫)。 使用自動實作的屬性時,您可以省略 Get
和 Set
程式。 如需詳細資訊,請參閱 自動實作的屬性。
您只能在類別層級使用 Property
。 這表示屬性的「宣告內容」必須是類別、結構、模組或介面,且不能是原始程式檔、命名空間、程序或區塊。 如需詳細資訊,請參閱宣告內容和預設存取層級。
根據預設,屬性會使用公用存取。 您可以在 Property
陳述式上使用存取修飾詞來調整屬性的存取層級,也可以選擇性地將其中一個屬性程序調整為更嚴格的存取層級。
Visual Basic 會在屬性指派期間將參數傳遞至 Set
程序。 如果您未提供 Set
的參數,則整合式開發環境 (IDE) 會使用名為 value
的隱含參數。 此參數會保留要指派給屬性的值。 您通常會將此值儲存在私用區域變數中,並在每次呼叫 Get
程序時傳回。
規則
混合的存取層級。 如果您要定義讀寫屬性,您可以選擇性地為
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
範例
下列範例會在類別中宣告屬性。
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