ReadOnly (Visual Basic)
Anger att en variabel eller egenskap kan läsas men inte skrivas.
Kommentarer
Regler
Deklarationskontext. Du kan bara använda
ReadOnly
på modulnivå. Det innebär att deklarationskontexten för ettReadOnly
element måste vara en klass, struktur eller modul och får inte vara en källfil, ett namnområde eller en procedur.Kombinerade modifierare. Du kan inte ange
ReadOnly
tillsammans medStatic
i samma deklaration.Tilldela ett värde. Kod som använder en
ReadOnly
egenskap kan inte ange dess värde. Men kod som har åtkomst till den underliggande lagringen kan tilldela eller ändra värdet när som helst.Du kan endast tilldela ett värde till en
ReadOnly
variabel i deklarationen eller i konstruktorn för en klass eller struktur där den definieras.
När du ska använda en ReadOnly-variabel
Det finns situationer där du inte kan använda en Const-instruktion för att deklarera och tilldela ett konstant värde. Instruktionen Const
kanske till exempel inte accepterar den datatyp som du vill tilldela, eller så kanske du inte kan beräkna värdet vid kompileringstiden med ett konstant uttryck. Du kanske inte ens känner till värdet vid kompileringstiden. I dessa fall kan du använda en ReadOnly
variabel för att lagra ett konstant värde.
Viktigt!
Om datatypen för variabeln är en referenstyp, till exempel en matris eller en klassinstans, kan dess medlemmar ändras även om själva variabeln är ReadOnly
. I följande exempel visas detta.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
När matrisen initieras pekar den på med characterArray()
"x", "y" och "z". Eftersom variabeln characterArray
är ReadOnly
kan du inte ändra dess värde när den har initierats. Du kan alltså inte tilldela en ny matris till den. Du kan dock ändra värdena för en eller flera av matrismedlemmarna. Efter ett anrop till proceduren ChangeArrayElement
pekar matrisen på med characterArray()
rymmer "x", "M" och "z".
Observera att detta liknar att deklarera en procedurparameter som ByVal, vilket förhindrar att proceduren ändrar själva anropsargumentet men tillåter att det ändrar sina medlemmar.
Exempel
I följande exempel definieras en ReadOnly
egenskap för det datum då en anställd anställdes. Klassen lagrar egenskapsvärdet internt som en Private
variabel, och endast kod i klassen kan ändra det värdet. Egenskapen är Public
dock , och all kod som kan komma åt klassen kan läsa egenskapen.
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
Modifieraren ReadOnly
kan användas i följande sammanhang: