Udostępnij za pośrednictwem


Porady: uzyskiwanie dostępu 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 tej wersji, która wymaga najmniejszej liczby kroków wstecz w hierarchii klas od klasy uzyskującej dostęp. Jeśli zmienna jest zdefiniowana w klasie pochodnej, kod zwykle uzyskuje dostęp do tej definicji.

Jeśli zmienna klasy pochodnej przesłania zmienną w klasie bazowej, ukrywa zmienną 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, jedno, które uzyskuje dostęp do zmiennej przesłaniającej i jedno, które pomija przesłanianie.

    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 wersję cienującą tego ciągu, gdy nazwa shadowString nie jest w pełni określona. Następnie wyświetla zacienioną wersję, gdy shadowString jest kwalifikowany 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 także