Jen pro čtení (Visual Basic)
Určuje, že proměnné nebo vlastnosti lze číst, ale nebyl zapsán.
Poznámky
Pravidla
Prohlášení kontextu. Můžete použít ReadOnly pouze na úrovni modulu.To znamená kontext prohlášení ReadOnly prvek musí být třída, struktura nebo modul a nemůže být zdrojový soubor, obor názvů nebo postup.
Kombinovanými modifikátory. Nelze zadat ReadOnly spolu s Static ve stejné deklaraci.
Přiřazení hodnoty. Kód spotřebovávat ReadOnly její hodnotu nelze nastavit vlastnost.Ale kód, který má přístup k podkladové úložiště můžete přiřadit nebo kdykoli změnit hodnotu.
Můžete přiřadit hodnotu ReadOnly proměnné pouze ve svém prohlášení nebo v konstruktoru třídy nebo struktury, ve které je definována.
Kdy použít proměnnou jen pro čtení
Existují situace, ve kterých nelze použít Příkaz const (Visual Basic) deklarovat a přiřadit konstantní hodnotu.Například Const prohlášení nepřijímá typ dat, který chcete přiřadit nebo pravděpodobně nebude možné vypočítat hodnotu v době kompilace s konstantní výraz.Možná ještě nevíte hodnota v čase kompilace.V těchto případech použít ReadOnly proměnné pro uložení konstantní hodnotu.
Poznámka k zabezpečení |
---|
Pokud typ odkazu, například pole nebo instanci třídy je typ dat proměnné členů lze změnit i v případě, že je proměnná sám ReadOnly.To ukazuje 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 odkazuje characterArray() podpalubí "x", "y" a "z".Protože proměnná characterArray je ReadOnly, její hodnotu nelze změnit, jakmile je inicializována; nové pole, nelze přiřadit k ní.Můžete však změnit hodnoty jednoho nebo více členů pole.Následující postup volání changeArrayElement, pole odkazuje characterArray() podpalubí "x", "M" a "z".
To je podobné deklarování parametru postup se ByVal (Visual Basic), zabraňuje postupem změnit argument volající, sám, ale umožňuje změnit jeho členů.
Příklad
Následující příklad definuje ReadOnly vlastnost pro datum přijetí zaměstnance.Úložišť tříd vlastnost hodnoty interně jako Private tuto hodnotu můžete změnit kód proměnné a pouze uvnitř třídy.Je však vlastnost Public, a jakýkoli kód, který můžete přistupovat k třídě lze čí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 v těchto kontextech: