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