HOW TO:存取衍生類別所隱藏的變數 (Visual Basic)
當衍生類別中的程式碼存取變數時,編譯器 (Compiler) 通常會將參考解析為最接近的可存取版本,也就是說,從正在存取的類別 (Class) 反推回去時,所需衍生步驟最少的可存取版本。 如果衍生類別中已經定義變數,則程式碼通常就會存取該定義。
如果衍生類別變數會遮蔽基底類別中的變數,則會隱藏基底類別版本。 不過,只要使用 MyBase 關鍵字來限定基底類別變數,即可存取這個變數。
存取衍生類別所隱藏的基底類別變數
在運算式或指派陳述式 (Assignment Statement) 中,於變數名稱之前加上 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,並且在衍生類別中遮蔽這個變數。 當名稱 shadowString 不限制時,在衍生類別中的 showStrings 程序會顯示字串的主導遮蔽版本。 接著當 shadowString 符合 MyBase 關鍵字資格時,會顯示遮蔽的版本。
穩固程式設計
若要降低參考到錯誤版本的受遮蔽變數的風險,您可以對受遮蔽變數的所有參考進行完整限定。 遮蔽會使用相同名稱引入多個變數版本。 當程式碼陳述式參考變數名稱時,編譯器 (Compiler) 所解析出的版本,取決於例如程式碼陳述式位置和限定字串的存在與否等因素。 這樣會提高參考到錯誤版本的變數的風險。
請參閱
工作
HOW TO:隱藏與您的變數名稱相同的變數 (Visual Basic)