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

Обновлен: Ноябрь 2007

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

Если переменная производного класса затеняет переменную в базовом классе, она скрывает версию базового класса. Однако можно получить доступ к переменной базового класса путем определения ее с помощью ключевого слова 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

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

Ссылки

Shadows

Overrides

Другие ресурсы

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