共用方式為


ReadOnly (Visual Basic)

指定變數或屬性可以讀取,但無法寫入。

備註

規則

  • 宣告內容。 您只能在模組層級使用 ReadOnly 。 這表示專案的宣告內容 ReadOnly 必須是類別、結構或模組,而且不能是來源檔案、命名空間或程式。

  • 合併修飾詞。 您無法在相同的宣告中一Static起指定 ReadOnly

  • 指派值。 取用屬性的程式 ReadOnly 代碼無法設定其值。 但是,可存取基礎記憶體的程式代碼可以隨時指派或變更值。

    您只能在其宣告中,或在其定義類別或結構的建構函式中,將值指派給 ReadOnly 變數。

使用 ReadOnly 變數的時機

在某些情況下,您無法使用 Const 語句 來宣告和指派常數值。 例如, Const 語句可能不接受您想要指派的數據類型,或者您可能無法在編譯時期使用常數表達式來計算值。 您甚至可能不知道編譯時期的值。 在這些情況下,您可以使用 ReadOnly 變數來保存常數值。

這很重要

如果變數的數據類型是參考型別,例如數位或類別實例,即使變數本身為 ReadOnly,也可以變更其成員。 下列範例說明這點。

ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
    characterArray(1) = "M"c
End Sub

初始化時,所指向的陣列會 characterArray() 保存 「x」、“y” 和 “z”。 因為變數 characterArrayReadOnly,所以一旦初始化變數,就無法變更其值;也就是說,您無法為其指派新的陣列。 不過,您可以變更一或多個數位成員的值。 在呼叫程式 ChangeArrayElement之後,所指向的數位會 characterArray() 保留 「x」、“ M” 和 「z」。

請注意,這類似於將程序參數宣告為 ByVal,這可防止程式變更呼叫自變數本身,但允許它變更其成員。

範例

下列範例會 ReadOnly 定義員工僱用日期的屬性。 類別會將屬性值儲存在內部做為 Private 變數,而且只有類別內的程式碼可以變更該值。 不過,屬性為 Public,而且任何可存取 類別的程式代碼都可以讀取 屬性。

Class employee
    ' Only code inside class employee can change the value of hireDateValue.
    Private hireDateValue As Date
    ' Any code that can access class employee can read property dateHired.
    Public ReadOnly Property dateHired() As Date
        Get
            Return hireDateValue
        End Get
    End Property
End Class

ReadOnly修飾詞可用於下列內容:

另請參閱