Delen via


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 een ReadOnly 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 ChangeArrayElementwordt 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 Publicechter 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:

Zie ook