Практическое руководство. Доступ к переменной, скрытой производным классом (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)
Ссылки
Основные понятия
Различия между сокрытием и переопределением (Visual Basic)
Me, My, MyBase и MyClass в Visual Basic
Основы наследования (Visual Basic)