Поделиться через


Практическое руководство. Доступ к переменной, скрытой производным классом (Visual Basic)

Когда код в производном классе обращается к переменной, компилятор обычно разрешает ссылку на ближайшую доступную версию, (т.е. доступную версию, отличающуюся от обращающегося класса на минимальное количество производных действий).Если переменная определена в производном классе, код обычно обращается к этому определению.

Если переменная производного класса затеняет переменную в базовом классе, она скрывает версию базового класса.Однако можно получить доступ к переменной базового класса путем определения ее с помощью ключевого слова MyBase.

Чтобы обратиться к переменной базового класса, скрытой производным классом

  • В выражении или операторе присваивания укажите перед именем переменной ключевое слово MyBase и точку (.).

    Компилятор разрешает ссылку на версию базового класса переменной.

    В следующем примере показано затенение через наследование.Производятся два обращения: одно — к затеняющей переменной, другое же обходит затенение.

    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
    

    В этом примере переменная shadowString, объявленная в базовом классе, скрывается в производном классе.Процедура showStrings в производном классе отображает версию затеняющую версию строки, если имя shadowString не квалифицировано полностью.Затем затененная версия отображается, если shadowString определяется с помощью ключевого слова MyBase .

Отказоустойчивость

Чтобы понизить риск ссылки на неправильную версию затененной переменной, можно полностью определить все ссылки на затененную переменную.Затенение представляет несколько версий переменной с тем же именем.Если оператор кода ссылается на имя переменной, то версия переменной, на которую компилятор разрешает ссылку, зависит от таких факторов, как расположение оператора кода и наличие строки с именем квалификации.Это может увеличить риск ссылки на неправильную версию переменной.

См. также

Задачи

Практическое руководство. Сокрытие переменной с тем же именем, что и ваша переменная (Visual Basic)

Практическое руководство. Сокрытие наследуемой переменной (Visual Basic)

Ссылки

Shadows (Visual Basic)

Overrides (Visual Basic)

Основные понятия

Ссылки на объявленные элементы (Visual Basic)

Сокрытие в Visual Basic

Различия между сокрытием и переопределением (Visual Basic)

Me, My, MyBase и MyClass в Visual Basic

Основы наследования (Visual Basic)