Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Určuje, že proměnnou nebo vlastnost lze číst, ale nelze zapsat.
Poznámky
Pravidla
Kontext deklarace Můžete použít
ReadOnlypouze na úrovni modulu. To znamená, že kontext deklarace prvkuReadOnlymusí 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
ReadOnlyspolečně seStaticstejnou deklarací.Přiřazení hodnoty Kód využívající
ReadOnlyvlastnost 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
ReadOnlymůž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. Následující příklad to ilustruje.
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: