共用方式為


Set 陳述式 (Visual Basic)

宣告用來將值指派至屬性 (Property) 的 Set 屬性 (Property) 程序。

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

組件

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

  • accessmodifier
    在這個屬性之其中一個 Get 和 Set 陳述式上的選擇項。 可以是下列其中一項:

    請參閱 Visual Basic 中的存取層級

  • value
    必要項。 包含屬性之新值的參數。

  • datatype
    如果 Option Strict 為 On,則為必要項。 value 參數的資料型別。 指定的資料型別必須與宣告這個 Set 陳述式所在屬性 (Property) 的資料型別相同。

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

  • End Set
    必要項。 結束 Set 屬性程序的定義。

備註

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

當指派陳述式 (Assignment Statement) 提供要儲存於屬性中的值時,Visual Basic 會自動呼叫屬性的 Set 程序。

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

屬性宣告主體只可在 Property 陳述式與 End Property 陳述式之間包含屬性的 Get 和 Set 程序, 除了這些程序以外,它無法儲存其他程序。 特別是無法儲存屬性的目前值。 因為如果將這個值儲存在任一屬性程序中,則其他屬性程序無法存取它,所以必須將它儲存在屬性外部。 一般的處理方式是將值儲存在與屬性相同層級上宣告的 Private (Visual Basic) 變數中。 而您必須在所套用的屬性內定義 Set 程序。

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

規則

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

    如果正在定義 WriteOnly 屬性,則 Set 程序會代表整個屬性。 若為 Set 宣告不同的存取層級,則會為屬性設定兩種存取層級,因此您不能這樣做。

行為

  • 從屬性程序傳回 當 Set 程序傳回到呼叫程式碼時,仍會繼續執行提供所要儲存之值的陳述式後面的陳述式。

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

    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

請參閱

參考

Get 陳述式

Property 陳述式

Sub 陳述式 (Visual Basic)

概念

屬性程序 (Visual Basic)