如何:访问派生类隐藏的变量(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关键字限定后,它将显示阴影版本。

可靠的编程

若要降低引用阴影变量意外版本的风险,可以完全限定对阴影变量的所有引用。 阴影引入了同名变量的多个版本。 当代码语句引用变量名称时,编译器解析引用的版本取决于代码语句的位置和限定字符串的存在等因素。 这会增加引用变量错误版本的风险。

另请参阅