ReadOnly (Visual Basic)
Określa, że zmienna lub właściwość może być odczytywana, ale nie zapisywana.
Uwagi
Reguły
Kontekst deklaracji. Można używać
ReadOnly
tylko na poziomie modułu. Oznacza to, że kontekst deklaracji elementuReadOnly
musi być klasą, strukturą lub modułem i nie może być plikiem źródłowym, przestrzenią nazw lub procedurą.Modyfikatory połączone. Nie można określić
ReadOnly
razem zStatic
tą samą deklaracją.Przypisywanie wartości. Kod zużywając
ReadOnly
właściwość nie może ustawić jej wartości. Jednak kod, który ma dostęp do bazowego magazynu, może w dowolnym momencie przypisać lub zmienić wartość.Wartość można przypisać do zmiennej
ReadOnly
tylko w jej deklaracji lub konstruktorze klasy lub struktury, w której jest zdefiniowana.
Kiedy używać zmiennej ReadOnly
Istnieją sytuacje, w których nie można użyć instrukcji Const do deklarowania i przypisywania stałej wartości. Na przykład instrukcja może nie akceptować typu danych, Const
który chcesz przypisać, lub może nie być w stanie obliczyć wartości w czasie kompilacji za pomocą wyrażenia stałego. Możesz nawet nie znać wartości w czasie kompilacji. W takich przypadkach można użyć zmiennej ReadOnly
do przechowywania stałej wartości.
Ważne
Jeśli typ danych zmiennej jest typem odwołania, takim jak tablica lub wystąpienie klasy, jego składowe można zmienić nawet wtedy, gdy zmienna to ReadOnly
. Ilustruje to poniższy przykład.
ReadOnly characterArray() As Char = {"x"c, "y"c, "z"c}
Sub ChangeArrayElement()
characterArray(1) = "M"c
End Sub
Po zainicjowaniu tablica wskazywana przez characterArray()
wartości "x", "y" i "z". Ponieważ zmienna characterArray
to ReadOnly
, nie można zmienić jej wartości po zainicjowaniu; oznacza to, że nie można przypisać do niej nowej tablicy. Można jednak zmienić wartości co najmniej jednego elementu członkowskiego tablicy. Po wywołaniu procedury ChangeArrayElement
tablica wskazywana przez characterArray()
blokady "x", "M" i "z".
Należy pamiętać, że jest to podobne do deklarowania parametru procedury o wartości ByVal, co uniemożliwia samej procedurze zmianę samego argumentu wywołującego, ale umożliwia zmianę jego składowych.
Przykład
W poniższym przykładzie zdefiniowano ReadOnly
właściwość dla daty, w której pracownik został zatrudniony. Klasa przechowuje wartość właściwości wewnętrznie jako zmienną Private
, a tylko kod wewnątrz klasy może zmienić wartość. Jednak właściwość to Public
, a każdy kod, który może uzyskać dostęp do klasy, może odczytać właściwość .
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
Modyfikator ReadOnly
może być używany w następujących kontekstach: