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. Procedura showStrings w klasie pochodnej wyświetla w tle wersję ciągu, gdy nazwa shadowString nie jest kwalifikowana. Następnie wyświetla wersję w tle, gdy shadowString jest kwalifikowana za pomocą słowa kluczowego MyBase .

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ż