當衍生類別程式碼存取變數時,編譯器通常會解析參考為最接近的可存取版本,也就是從存取類別依序往上最少步驟的衍生版本。 如果變數是在衍生類別中定義,程式代碼通常會存取該定義。
如果衍生類別變數遮蔽基類中的變數,則會隱藏基類版本。 不過,您可以使用 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關鍵詞限定時,它會顯示陰影版本。
健全的程式設計
若要降低參考陰影變數非預期版本的風險,您可以完整限定陰影變數的所有參考。 陰影會導入多個具有相同名稱的變數版本。 當程式代碼語句參考變數名稱時,編譯程式解析參考的版本取決於程式代碼語句的位置和限定字串是否存在等因素。 這可能會增加參考變數錯誤版本的風險。