如何:存取衍生類別所隱藏的變數 (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
關鍵字限定時,顯示被遮蔽的版本。
穩固程式設計
為了降低參考遮蔽變數的非預期版本的風險,您可以完全限定對遮蔽變數的所有參考。 遮蔽引進多個具有相同名稱的變數版本。 當程式碼陳述式參考變數名稱時,編譯器解析參考的版本取決於程式碼陳述式的位置和限定字串是否存在等因素。 這會增加參考變數錯誤版本的風險。