Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Когда код в производном классе обращается к переменной, компилятор обычно разрешает ссылку на ближайшую доступную версию, то есть доступную версию с наименьшим количеством шагов наследования от класса, который выполняет доступ. Если переменная определена в производном классе, код обычно обращается к определению.
Если переменная производного класса перекрывает переменную в базовом классе, она скрывает версию базового класса. Однако вы можете получить доступ к переменной базового класса, квалифицируя ее с помощью ключевого 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.
Надежное программирование
Чтобы снизить риск обращения к непреднамеренной версии теневой переменной, можно полностью квалифицировать все ссылки на теневую переменную. Тень представляет несколько версий переменной с одинаковым именем. Если инструкция кода ссылается на имя переменной, версия, к которой компилятор разрешает эту ссылку, зависит от таких факторов, как расположение инструкции кода и наличие уточняющей строки. Это может увеличить риск ссылки на неправильную версию переменной.