ReadOnly (Visual Basic)
Gibt an, dass eine Variable oder Eigenschaft gelesen werden kann, jedoch kein Schreibvorgang möglich ist.
Bemerkungen
Regeln
Deklarationskontext. Sie können
ReadOnly
nur auf Modulebene verwenden. Der Deklarationskontext für einReadOnly
-Element muss demnach eine Klasse, Struktur oder ein Modul sein und darf keine Quelldatei, kein Namespace und keine Prozedur sein.Kombinierte Modifizierer.
ReadOnly
kann nicht zusammen mitStatic
in der gleichen Deklaration angegeben werden.Zuweisen eines Werts. Code, der eine
ReadOnly
-Eigenschaft verwendet, kann ihren Wert nicht festlegen. Code, der Zugriff auf den zugrunde liegenden Speicher hat, kann den Wert jedoch jederzeit zuweisen oder ändern.Sie können einer
ReadOnly
-Variablen nur in ihrer Deklaration oder im Konstruktor einer Klasse oder Struktur, in der sie definiert ist, einen Wert zuweisen.
Wann sollte eine ReadOnly-Variable verwendet werden?
Es gibt Situationen, in denen Sie keine Const-Anweisung verwenden können, um einen konstanten Wert zu deklarieren und zuzuweisen. Beispielsweise akzeptiert die Const
-Anweisung möglicherweise nicht den Datentyp, den Sie zuweisen möchten, oder Sie können den Wert zur Kompilierzeit nicht mit einem konstanten Ausdruck berechnen. Möglicherweise kennen Sie den Wert zur Kompilierzeit nicht einmal. In diesen Fällen können Sie eine ReadOnly
-Variable verwenden, um einen konstanten Wert zu halten.
Wichtig
Wenn der Datentyp der Variablen ein Verweistyp ist, z. B. ein Array oder eine Klasseninstanz, können ihre Member geändert werden, auch wenn die Variable selbst ReadOnly
ist. 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 enthält das Array, auf das mit characterArray()
verwiesen wird, „x“, „y“ und „z“. Da die Variable characterArray
ReadOnly
ist, können Sie ihren Wert nach der Initialisierung nicht mehr ändern. Das heißt, Sie können ihr kein neues Array zuweisen. Sie können jedoch die Werte eines oder mehrerer Arraymember ändern. Nach einem Aufruf der Prozedur ChangeArrayElement
enthält das Array, auf das mit characterArray()
verwiesen wird, „x“, „M“ und „z“.
Beachten Sie, dass dies dem Deklarieren eines Prozedurparameters als ByVal ähnelt. Dadurch wird verhindert, dass die Prozedur das aufrufende Argument selbst ändert, ihre Member jedoch ä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 ist jedoch Public
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: