Megosztás a következőn keresztül:


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 egy ReadOnly 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ütt Static .

  • É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 ChangeArrayElementmeghí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ó:

Lásd még