Set 陳述式 (Visual Basic)
宣告用於指派屬性值的 Set
屬性程序。
語法
[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]
[ statements ]
End Set
組件
attributelist
選擇性。 請參閱屬性清單。
accessmodifier
最多對此屬性中 Get
和 Set
陳述式的其中一者為選擇性。 可以是下列其中一項:
請參閱 Access levels in Visual Basic。
value
選擇性。 包含新屬性值的參數。 如果未指定參數,亦即如果參數清單不存在或空白,則會定義名為 value
的隱含參數。 這個隱含參數的資料類型,與宣告此 Set
陳述式的屬性為同一種類型。
datatype
如果 value
存在且 Option Strict
為 On
,則為必要。 如果沒有 value
,則不可存在。 value
參數的資料類型。 指定的資料類型必須與宣告此 Set
陳述式的屬性所屬資料類型相同。
statements
選擇性。 呼叫 Set
屬性程序時執行的一或多個陳述式。
End Set
必要。 終止 Set
屬性程序的定義。
備註
除非屬性標示為 ReadOnly
,否則每個屬性都必須有 Set
屬性程序。 Set
程序係用於設定屬性的值。
如果指派陳述式提供要儲存在屬性中的值,Visual Basic 會自動呼叫屬性的 Set
程序。
Visual Basic 會在屬性指派期間將參數傳遞至 Set
程序。 如果您未提供 Set
的參數,整合式開發環境 (IDE) 會使用名為 value
的隱含參數。 參數會保留要指派給屬性的值。 您通常會將此值儲存在私人區域變數中,並在每次呼叫 Get
程序時傳回。
屬性宣告的主體只能包含屬性陳述式與 End Property
陳述式之間的屬性 Get
和 Set
程序。 它無法儲存這些程序以外的任何項目。 它尤其無法儲存屬性目前的值。 因為您如果將此值儲存在任一屬性程序內,其他屬性程序就無法存取它,所以您必須將其儲存在屬性之外。 一般方法是將值儲存在與屬性相同層級宣告的私用變數中。 您必須在套用該值的屬性中定義 Set
程序。
除非您在 Set
陳述式使用 accessmodifier
,否則 Set
程式會將所包含屬性的存取層級設為預設值。
規則
混合的存取層級。 如果您要定義讀寫屬性,您可以選擇性地為
Get
或Set
程序指定不同的存取層級,但不能同時指定兩者。 如果您這樣做,程序存取層級必須比屬性的存取層級更嚴格。 例如,如果屬性已宣告為Friend
,則您可以將Set
程序宣告為Private
,但不能宣告為Public
。如果您要定義
WriteOnly
屬性,則Set
程序代表整個屬性。 您無法為Set
宣告不同的存取層級,因為這會為屬性設定兩個存取層級。
行為
從屬性程序傳回。 當
Set
程序傳回呼叫程式碼時,如果值需要儲存,執行就會繼續遵循陳述式。Set
屬性程序可以使用 Return 陳述式 或 Exit 陳述式傳回。Exit Property
和Return
陳述式會導致屬性程序立即結束。 任意數目的Exit Property
和Return
陳述式可以出現在程序中的任何位置,且您可以混合Exit Property
與Return
陳述式。
範例
下列範例會使用 Set
陳述式來設定屬性的值。
Class propClass
Private propVal As Integer
Property Prop1() As Integer
Get
Return propVal
End Get
Set(ByVal value As Integer)
propVal = value
End Set
End Property
End Class