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