共用方式為


HOW TO:存取衍生類別所隱藏的變數

更新:2007 年 11 月

當衍生類別中的程式碼存取變數時,編譯器 (Compiler) 通常會將參考解析為最接近的可存取版本,也就是說,從正在存取的類別 (Class) 反推回去時,所需衍生步驟最少的可存取版本。如果衍生類別中已經定義變數,則程式碼通常就會存取該定義。

如果衍生類別變數會遮蔽基底類別中的變數,則會隱藏基底類別版本。不過,只要使用 MyBase 關鍵字來限定基底類別變數,即可存取這個變數。

存取衍生類別所隱藏的基底類別變數

  • 在運算式或指派陳述式 (Assignment Statement) 中,於變數名稱之前加上 MyBase 關鍵字和句號 (.)。

    編譯器會將參考解析為變數的基底類別版本。

    下列範例會說明透過繼承 (Inheritance) 來進行主導遮蔽。這個範例會建立兩個參考,一個參考會存取主導遮蔽變數,另一個參考則會略過遮蔽。

    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:區分兩個相同名稱的元素

HOW TO:隱藏與您的變數名稱相同的變數

HOW TO:隱藏繼承的變數

概念

當多個變數擁有相同名稱時解析參考

Visual Basic 中的遮蔽功能

遮蔽和覆寫的差異

參考

Shadows

Overrides

其他資源

已宣告之項目的參考