Tylko do odczytu (Visual Basic)
Określa, że zmiennej lub właściwości mogą być odczytywane, ale nie są zapisywane.
Uwagi
Zasady
Kontekst deklaracji. Można użyć ReadOnly tylko na poziomie modułu.Oznacza to kontekst deklaracji ReadOnly element musi być klasy, struktury lub moduł i nie może być plikiem źródłowym, obszar nazw lub procedury.
Połączonymi modyfikatorami. Nie można określić ReadOnly wraz z Static w tej samej deklaracji.
Przypisanie wartości. Kod używające ReadOnly właściwości nie można ustawić jej wartość.Jednak kod, który ma dostęp do przechowywania podstawowej można przypisać lub zmienić wartość w dowolnym momencie.
Można przypisać wartości do ReadOnly zmiennej tylko w swojej deklaracji lub w konstruktorze klasy lub struktury, w którym jest zdefiniowana.
Kiedy używać zmiennej tylko do odczytu
Istnieją sytuacje, w których nie można używać Instrukcja const (Visual Basic) zadeklarować i przypisać wartość stałą.Na przykład Const instrukcja nie może zaakceptować typ danych, które chcesz przypisać lub nie można obliczyć wartości w czasie kompilacji w wyrażeniu stałym.Być może nie nawet znasz wartość w czasie kompilacji.W takich przypadkach można użyć ReadOnly zmienną wartość stałą.
Uwaga dotycząca zabezpieczeń |
---|
Jeśli typ danych zmiennej jest typem odwołania, takich jak tablica lub wystąpienia klasy, jej członków można zmienić, nawet jeśli sam zmienna jest 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
Podczas inicjowania tablicy wskazywanej przez characterArray() posiada "x", "y" i "z".Ponieważ zmienna characterArray jest ReadOnly, nie można zmienić jej wartość, gdy jest zainicjowana; oznacza to, że nie można przypisać nowej tablicy do niego.Można jednak zmienić wartości jednego lub więcej członków tablicy.Po wywołaniu procedury changeArrayElement, tablica wskazywanej przez characterArray() posiada "x", "M" i "z".
Należy zauważyć, że jest to podobne do deklarowania parametru procedury za ByVal (Visual Basic), który uniemożliwia zmianę argumentu wywołującego, sama procedura, ale pozwala zmienić jego członków.
Przykład
Poniższy przykład definiuje ReadOnly właściwość w dniu, w którym zatrudniono pracownika.Magazynów klas, właściwości wartości wewnętrznie jako Private kod zmiennej i tylko wewnątrz klasy można zmienić tej wartości.Jednak ta właściwość jest Public, i każdy kod, który można uzyskać dostęp do tej klasy można odczytać właściwości.
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
ReadOnly Modyfikator mogą być używane w tych kontekstach: