Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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 einReadOnlyElement 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
Staticderselben Deklaration angebenReadOnly.Zuweisen eines Werts. Code, der eine
ReadOnlyEigenschaft 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
ReadOnlyWert 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: