ReadOnly (Visual Basic)

Legt fest, dass eine Variable oder Eigenschaft schreibgeschützt ist, also nur gelesen, aber nicht geschrieben werden kann.

Hinweise

Regeln

  • Deklarationskontext. ReadOnly kann nur auf Modulebene verwendet werden. Dies bedeutet, dass der Deklarationskontext für ein ReadOnly-Element eine Klasse, eine Struktur oder ein Modul sein muss und keine Quelldatei, kein Namespace und keine Prozedur sein kann.

  • Kombinierte Modifizierer. Sie können ReadOnly nicht zusammen mit Static in derselben Deklaration angeben.

  • Zuweisen von Werten. Code, in dem eine ReadOnly-Eigenschaft verwendet wird, kann deren Wert nicht festlegen. Jedoch kann Code, der Zugriff auf den zugrunde liegenden Speicher hat, den Wert jederzeit zuweisen oder ändern.

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

Verwenden einer ReadOnly-Variablen

Es gibt Situationen, in denen Sie keine Const-Anweisung (Visual Basic) verwenden können, um einen konstanten Wert zu deklarieren und zuzuweisen. Beispielsweise ist es möglich, dass die Const-Anweisung den Datentyp, den Sie zuweisen möchten, nicht akzeptiert, oder dass der Wert während des Kompilierens nicht mit einem konstanten Ausdruck berechnet werden kann. Möglicherweise ist der Wert zur Kompilierungszeit nicht einmal bekannt. In diesen Fällen können Sie eine ReadOnly-Variable zum Speichern eines konstanten Werts verwenden.

SicherheitshinweisSicherheitshinweis

Falls es sich beim Datentyp der Variablen um einen Verweistyp handelt, etwa ein Array oder eine Klasseninstanz, dann können dessen bzw. deren Member auch dann geändert werden, wenn die Variable selbst als ReadOnly deklariert wurde. 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

Nach seiner Initialisierung enthält das Array, auf das characterArray() zeigt, die Werte "x", "y" und "z". Weil die characterArray-Variable als ReadOnly deklariert wurde, können Sie ihren Wert nach ihrer Initialisierung nicht ändern; d. h. Sie können ihr kein anderes Array zuweisen. Sie können jedoch die Werte von einem oder mehreren Arraymember(n) ändern. Nach einem Aufruf der Prozedur changeArrayElement enthält das Array, auf das characterArray() zeigt, die Werte "x", "M" und "z".

Beachten Sie, dass dies der Deklaration eines Prozedurparameters als ByVal (Visual Basic) ähnlich ist. Diese Deklaration bewirkt, dass die Prozedur zwar nicht das Aufrufargument, aber dessen Member verändern kann.

Beispiel

Im folgenden Beispiel wird eine ReadOnly-Eigenschaft für das Einstellungsdatum eines Mitarbeiters definiert. In der Klasse wird der Eigenschaftswert intern als Private-Variable gespeichert, und nur Code innerhalb der Klasse kann diesen Wert ändern. Die Eigenschaft ist jedoch als Public deklariert, 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:

Dim-Anweisung

Property-Anweisung

Siehe auch

Referenz

WriteOnly (Visual Basic)

Weitere Ressourcen

Schlüsselwörter (Visual Basic)