当派生类中的代码访问一个变量时,编译器通常会将该引用解析为最接近的可访问版本,即从访问类开始使用最少派生步骤的可访问版本。 如果变量在派生类中定义,则代码通常会访问该定义。
如果派生类变量隐藏基类中的变量,它将隐藏基类版本。 但是,可以通过使用 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 中的阴影
- 屏蔽与覆写之间的差异
- 如何:隐藏与您的变量同名的变量
- 如何:隐藏继承的变量
- 阴影
- 重写
- Me、My、MyBase 和 MyClass
- 继承基础知识