Set 陳述式 (Visual Basic)

宣告用於指派屬性值的 Set 屬性程序。

語法

[ <attributelist> ] [ accessmodifier ] Set [([ByVal value [ As datatype ]])]  
    [ statements ]  
End Set  

組件

attributelist
選擇性。 請參閱屬性清單

accessmodifier
最多對此屬性中 GetSet 陳述式的其中一者為選擇性。 可以是下列其中一項:

請參閱 Access levels in Visual Basic

value
選擇性。 包含新屬性值的參數。 如果未指定參數,亦即如果參數清單不存在或空白,則會定義名為 value 的隱含參數。 這個隱含參數的資料類型,與宣告此 Set 陳述式的屬性為同一種類型。

datatype
如果 value 存在且 Option StrictOn,則為必要。 如果沒有 value,則不可存在。 value 參數的資料類型。 指定的資料類型必須與宣告此 Set 陳述式的屬性所屬資料類型相同。

statements
選擇性。 呼叫 Set 屬性程序時執行的一或多個陳述式。

End Set
必要。 終止 Set 屬性程序的定義。

備註

除非屬性標示為 ReadOnly,否則每個屬性都必須有 Set 屬性程序。 Set 程序係用於設定屬性的值。

如果指派陳述式提供要儲存在屬性中的值,Visual Basic 會自動呼叫屬性的 Set 程序。

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

屬性宣告的主體只能包含屬性陳述式End Property 陳述式之間的屬性 GetSet 程序。 它無法儲存這些程序以外的任何項目。 它尤其無法儲存屬性目前的值。 因為您如果將此值儲存在任一屬性程序內,其他屬性程序就無法存取它,所以您必須將其儲存在屬性之外。 一般方法是將值儲存在與屬性相同層級宣告的私用變數中。 您必須在套用該值的屬性中定義 Set 程序。

除非您在 Set 陳述式使用 accessmodifier,否則 Set 程式會將所包含屬性的存取層級設為預設值。

規則

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

    如果您要定義 WriteOnly 屬性,則 Set 程序代表整個屬性。 您無法為 Set 宣告不同的存取層級,因為這會為屬性設定兩個存取層級。

行為

  • 從屬性程序傳回。Set 程序傳回呼叫程式碼時,如果值需要儲存,執行就會繼續遵循陳述式。

    Set 屬性程序可以使用 Return 陳述式Exit 陳述式傳回。

    Exit PropertyReturn 陳述式會導致屬性程序立即結束。 任意數目的 Exit PropertyReturn 陳述式可以出現在程序中的任何位置,且您可以混合 Exit PropertyReturn 陳述式。

範例

下列範例會使用 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

另請參閱