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


Практическое руководство. Доступ к переменной, скрытой производным классом (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.

Надежное программирование

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

См. также