Sdílet prostřednictvím


ReadOnly (Visual Basic)

Určuje, že proměnnou nebo vlastnost lze číst, ale nelze zapsat.

Poznámky

Pravidla

  • Kontext deklarace Můžete použít ReadOnly pouze na úrovni modulu. To znamená, že kontext deklarace prvku ReadOnly musí být třída, struktura nebo modul a nemůže to být zdrojový soubor, obor názvů nebo procedura.

  • Kombinované modifikátory. Nelze zadat ReadOnly společně se Static stejnou deklarací.

  • Přiřazení hodnoty Kód využívající ReadOnly vlastnost nemůže nastavit jeho hodnotu. Kód, který má přístup k podkladovému úložišti, ale může kdykoli přiřadit nebo změnit hodnotu.

    Hodnotu ReadOnly můžete přiřadit proměnné pouze v její deklaraci nebo v konstruktoru třídy nebo struktury, ve které je definována.

Kdy použít proměnnou jen pro čtení

Existují situace, kdy nelze pomocí příkazu Const deklarovat a přiřadit konstantní hodnotu. Příkaz například nemusí přijmout datový typ, Const který chcete přiřadit, nebo nebudete moct vypočítat hodnotu v době kompilace pomocí konstantního výrazu. Možná ani neznáte hodnotu v době kompilace. V těchto případech můžete proměnnou ReadOnly použít k uchování konstantní hodnoty.

Důležité

Pokud je datový typ proměnné referenčním typem, například pole nebo instance třídy, mohou být jeho členy změněny i v případě, že samotná proměnná je ReadOnly. Toto dokládá následující příklad.

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

Při inicializaci pole, na které characterArray() odkazuje, obsahuje "x", "y" a "z". Protože proměnná characterArray je ReadOnly, nemůžete změnit její hodnotu po inicializaci; to znamená, že nemůžete přiřadit nové pole. Můžete ale změnit hodnoty jednoho nebo více členů pole. Po volání procedury ChangeArrayElementpole, na které characterArray() odkazuje "x", "M" a "z".

Všimněte si, že se to podobá deklarování parametru procedury byVal, který brání postupu ve změně samotného volajícího argumentu, ale umožňuje změnit jeho členy.

Příklad

Následující příklad definuje ReadOnly vlastnost pro datum, kdy byl zaměstnanec přijat. Třída ukládá hodnotu vlastnosti interně jako proměnnou Private a pouze kód uvnitř třídy může tuto hodnotu změnit. Vlastnost je Publicvšak a jakýkoli kód, který má přístup ke třídě, může číst vlastnost.

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 Modifikátor lze použít v těchto kontextech:

Viz také