ReadOnly (Visual Basic)
Hiermee geeft u op dat een variabele of eigenschap kan worden gelezen maar niet geschreven.
Opmerkingen
Regels
Declaratiecontext. U kunt alleen op moduleniveau gebruiken
ReadOnly
. Dit betekent dat de declaratiecontext voor eenReadOnly
element een klasse, structuur of module moet zijn en geen bronbestand, naamruimte of procedure kan zijn.Gecombineerde modifiers. U kunt niet samen met
Static
dezelfde declaratie opgevenReadOnly
.Een waarde toewijzen. Code die een
ReadOnly
eigenschap gebruikt, kan de waarde ervan niet instellen. Maar code die toegang heeft tot de onderliggende opslag, kan de waarde op elk gewenst moment toewijzen of wijzigen.U kunt een waarde alleen toewijzen aan een
ReadOnly
variabele in de declaratie of in de constructor van een klasse of structuur waarin deze is gedefinieerd.
Wanneer een ReadOnly-variabele gebruiken
Er zijn situaties waarin u geen Const-instructie kunt gebruiken om een constante waarde te declareren en toe te wijzen. De Const
instructie accepteert bijvoorbeeld mogelijk niet het gegevenstype dat u wilt toewijzen, of u kunt de waarde tijdens het compileren mogelijk niet berekenen met een constante expressie. Misschien weet u de waarde niet eens tijdens het compileren. In dergelijke gevallen kunt u een ReadOnly
variabele gebruiken om een constante waarde vast te houden.
Belangrijk
Als het gegevenstype van de variabele een verwijzingstype is, zoals een matrix of een klasse-exemplaar, kunnen de leden ervan worden gewijzigd, zelfs als de variabele zelf is ReadOnly
. In het volgende voorbeeld ziet u dit.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Wanneer de matrix is geïnitialiseerd, wijst deze op characterArray()
'x', 'y' en 'z'. Omdat de variabele isReadOnly
, kunt u de waarde ervan niet meer wijzigen zodra deze is geïnitialiseerd. U kunt dus geen nieuwe matrix aan de variabele characterArray
toewijzen. U kunt echter de waarden van een of meer matrixleden wijzigen. Na een aanroep van de procedure ChangeArrayElement
wordt de matrix die aangegeven door characterArray()
'x', 'M' en 'z' bevat.
Houd er rekening mee dat dit vergelijkbaar is met het declareren van een procedureparameter als ByVal, waardoor de procedure het aanroepende argument zelf niet kan wijzigen, maar hiermee de leden ervan kan wijzigen.
Opmerking
In het volgende voorbeeld wordt een ReadOnly
eigenschap gedefinieerd voor de datum waarop een werknemer is aangenomen. De klasse slaat de eigenschapswaarde intern op als een Private
variabele en alleen code in de klasse kan die waarde wijzigen. De eigenschap is Public
echter en elke code die toegang heeft tot de klasse, kan de eigenschap lezen.
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
De ReadOnly
wijzigingsfunctie kan in deze contexten worden gebruikt: