Porady: dostęp do zmiennej ukrytej przez klasę pochodną (Visual Basic)
Gdy kod w klasie pochodnej uzyskuje dostęp do zmiennej, kompilator zwykle rozpoznaje odwołanie do najbliższej dostępnej wersji, czyli dostępnej wersji najmniej kroków pochodnych z klasy dostępu do tyłu. Jeśli zmienna jest zdefiniowana w klasie pochodnej, kod zwykle uzyskuje dostęp do tej definicji.
Jeśli zmienna klasy pochodnej w tle zmienną w klasie bazowej, ukrywa wersję klasy bazowej. Można jednak uzyskać dostęp do zmiennej klasy bazowej, kwalifikując ją za pomocą słowa kluczowego MyBase
.
Aby uzyskać dostęp do zmiennej klasy bazowej ukrytej przez klasę pochodną
W instrukcji wyrażenia lub przypisania poprzedzić nazwę zmiennej
MyBase
słowem kluczowym i kropką (.
).Kompilator rozpoznaje odwołanie do wersji klasy bazowej zmiennej.
Poniższy przykład ilustruje cieniowanie przez dziedziczenie. Tworzy dwa odwołania, jeden, który uzyskuje dostęp do zmiennej cieniowania i jeden, który pomija cieniowanie.
Public Class shadowBaseClass Public shadowString As String = "This is the base class string." End Class Public Class shadowDerivedClass Inherits shadowBaseClass Public Shadows shadowString As String = "This is the derived class string." Public Sub showStrings() Dim s As String = "Unqualified shadowString: " & shadowString & vbCrLf & "MyBase.shadowString: " & MyBase.shadowString MsgBox(s) End Sub End Class
Powyższy przykład deklaruje zmienną
shadowString
w klasie bazowej i cieniuje ją w klasie pochodnej. ProcedurashowStrings
w klasie pochodnej wyświetla w tle wersję ciągu, gdy nazwashadowString
nie jest kwalifikowana. Następnie wyświetla wersję w tle, gdyshadowString
jest kwalifikowana za pomocą słowa kluczowegoMyBase
.
Niezawodne programowanie
Aby zmniejszyć ryzyko odwoływania się do niezamierzonej wersji zmiennej w tle, można w pełni zakwalifikować wszystkie odwołania do zmiennej w tle. Funkcja cieniowania wprowadza więcej niż jedną wersję zmiennej o tej samej nazwie. Gdy instrukcja kodu odwołuje się do nazwy zmiennej, wersja, do której kompilator rozpoznaje odwołanie, zależy od czynników, takich jak lokalizacja instrukcji kodu i obecność ciągu kwalifikującego. Może to zwiększyć ryzyko odwoływania się do niewłaściwej wersji zmiennej.
Zobacz też
- Odwołania do elementów zadeklarowanych
- Cieniowanie w Visual Basic
- Różnice między przesłanianiem i zastępowaniem
- Instrukcje: ukrywanie zmiennej o tej samej nazwie jako zmiennej użytkownika
- Instrukcje: ukrywanie dziedziczonej zmiennej
- Shadows
- Overrides
- Me, My, MyBase i MyClass
- Podstawowe informacje o dziedziczeniu