Freigeben über


ReadOnly (Visual Basic)

Gibt an, dass eine Variable oder Eigenschaft gelesen, aber nicht geschrieben werden kann.

Bemerkungen

Regeln

  • Deklarationskontext. Sie können nur auf Modulebene verwenden ReadOnly . Dies bedeutet, dass der Deklarationskontext für ein ReadOnly Element eine Klasse, Struktur oder ein Modul sein muss und keine Quelldatei, ein Namespace oder eine Prozedur sein kann.

  • Kombinierte Modifizierer. Sie können nicht zusammen mit Static derselben Deklaration angebenReadOnly.

  • Zuweisen eines Werts. Code, der eine ReadOnly Eigenschaft verwendet, kann seinen Wert nicht festlegen. Code, der Zugriff auf den zugrunde liegenden Speicher hat, kann den Wert jedoch jederzeit zuweisen oder ändern.

    Sie können einer Variablen nur in der Deklaration oder im Konstruktor einer Klasse oder Struktur, in der sie definiert ist, einen ReadOnly Wert zuweisen.

Wann eine ReadOnly-Variable verwendet werden soll

Es gibt Situationen, in denen Sie keine Const-Anweisung verwenden können, um einen Konstantenwert zu deklarieren und zuzuweisen. Die Anweisung akzeptiert beispielsweise nicht den Datentyp, Const den Sie zuweisen möchten, oder Sie können den Wert zur Kompilierungszeit nicht mit einem konstanten Ausdruck berechnen. Möglicherweise kennen Sie den Wert zur Kompilierungszeit nicht einmal. In diesen Fällen können Sie eine ReadOnly Variable verwenden, um einen konstanten Wert zu speichern.

Von Bedeutung

Wenn der Datentyp der Variablen ein Verweistyp ist, z. B. ein Array oder eine Klasseninstanz, können die Member auch dann geändert werden, wenn die Variable selbst lautet ReadOnly. Dies wird anhand des folgenden Beispiels veranschaulicht.

ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
    characterArray(1) = "M"c
End Sub

Bei der Initialisierung weist das Array auf characterArray() "x", "y" und "z" hin. Da die Variable characterArray lautet ReadOnly, können Sie den Wert nicht mehr ändern, nachdem sie initialisiert wurde. Das heißt, Sie können ihr kein neues Array zuweisen. Sie können jedoch die Werte eines oder mehrerer Arraymber ändern. Nach einem Aufruf der Prozedur ChangeArrayElementverweist das Array auf characterArray() "x", "M" und "z".

Beachten Sie, dass dies dem Deklarieren eines Prozedurparameters als ByVal ähnelt, wodurch verhindert wird, dass die Prozedur das aufrufende Argument selbst ändert, aber die Member ändern kann.

Beispiel

Im folgenden Beispiel wird eine ReadOnly Eigenschaft für das Datum definiert, an dem ein Mitarbeiter eingestellt wurde. Die Klasse speichert den Eigenschaftswert intern als Private Variable, und nur Code innerhalb der Klasse kann diesen Wert ändern. Die Eigenschaft lautet Publicjedoch, und jeder Code, der auf die Klasse zugreifen kann, kann die Eigenschaft lesen.

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

Der ReadOnly Modifizierer kann in folgenden Kontexten verwendet werden:

Siehe auch