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 einReadOnly
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 ChangeArrayElement
verweist 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 Public
jedoch, 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: