ReadOnly (Visual Basic)
Megadja, hogy egy változó vagy tulajdonság olvasható, de nem írható.
Megjegyzések
Szabályok
Deklarációs környezet. Csak modulszinten használható
ReadOnly
. Ez azt jelenti, hogy egyReadOnly
elem deklarációs környezetének osztálynak, struktúrának vagy modulnak kell lennie, és nem lehet forrásfájl, névtér vagy eljárás.Kombinált módosítók. Ugyanabban a deklarációban nem adható meg
ReadOnly
együttStatic
.Érték hozzárendelése. A tulajdonságot
ReadOnly
használó kód nem tudja beállítani az értékét. A mögöttes tárolóhoz hozzáféréssel rendelkező kód azonban bármikor hozzárendelheti vagy módosíthatja az értéket.Egy változóhoz
ReadOnly
csak annak deklarációjában vagy egy definiált osztály vagy struktúra konstruktorában rendelhet hozzá értéket.
Mikor érdemes írásvédett változót használni?
Vannak olyan helyzetek, amikor nem használhat Konstans-utasítást állandó érték deklarálásához és hozzárendeléséhez. Előfordulhat például, hogy az Const
utasítás nem fogadja el a hozzárendelni kívánt adattípust, vagy előfordulhat, hogy a fordításkor nem tudja kiszámítani az értéket állandó kifejezéssel. Lehet, hogy még a fordításkor sem tudja az értéket. Ezekben az esetekben egy ReadOnly
változóval állandó értéket tárolhat.
Fontos
Ha a változó adattípusa hivatkozási típus, például tömb vagy osztálypéldány, akkor a tagjai akkor is módosíthatók, ha maga a változó.ReadOnly
Az alábbi példa ezt szemlélteti.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Inicializáláskor a tömb characterArray()
az "x", "y" és "z" értéket tartalmazza. Mivel a változó characterArray
az ReadOnly
, az inicializálás után nem módosíthatja az értékét, vagyis nem rendelhet hozzá új tömböt. Egy vagy több tömbtag értékét azonban módosíthatja. Az eljárás ChangeArrayElement
meghívását követően az "x", az "M" és a "z" értékre characterArray()
mutatott tömb.
Vegye figyelembe, hogy ez hasonló ahhoz, ha egy eljárásparamétert ByVal értékre deklarál, ami megakadályozza, hogy az eljárás magát a hívó argumentumot módosítsa, de lehetővé teszi a tagok módosítását.
Példa
Az alábbi példa egy tulajdonságot ReadOnly
határoz meg arra a dátumra vonatkozóan, amikor az alkalmazottat felvették. Az osztály belsőleg változóként tárolja a tulajdonságértéket Private
, és csak az osztályon belüli kód módosíthatja ezt az értéket. A tulajdonság azonban az Public
, és az osztályhoz hozzáférő bármely kód elolvashatja a tulajdonságot.
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
A ReadOnly
módosító az alábbi környezetekben használható: