Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Określa, że zmienna lub właściwość może być odczytywana, ale nie zapisywana.
Uwagi
Reguły
Kontekst deklaracji. Można używać
ReadOnlytylko na poziomie modułu. Oznacza to, że kontekst deklaracji elementuReadOnlymusi 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ć
ReadOnlyrazem zStatictą samą deklaracją.Przypisywanie wartości. Kod zużywając
ReadOnlywł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
ReadOnlytylko 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. Poniższy przykład ilustruje to.
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 ChangeArrayElementtablica 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: