Compartir a través de


Cómo: Obtener acceso a una variable que oculta una clase derivada (Visual Basic)

Cuando un código de una clase derivada tiene acceso a una variable, el compilador resuelve normalmente la referencia en la versión accesible más cercana, es decir, la versión accesible con el menor número de pasos de derivación en sentido inverso desde la clase que obtiene acceso. Si la variable está definida en la clase derivada, el código tiene acceso normalmente a esta definición.

Si la variable de la clase derivada enmascara una variable de la clase base, oculta la versión de la clase base. Sin embargo, puede tener acceso a la variable de la clase base calificándola con la palabra clave MyBase.

Para tener acceso a una variable de la clase base ocultada por una clase derivada

  • En una expresión o instrucción de asignación, preceda el nombre de variable con la palabra clave MyBase y un punto (.).

    El compilador resuelve la referencia en la versión de la clase base de la variable.

    El ejemplo siguiente ilustra el sombreado por herencia. Realiza dos referencias, una que tiene acceso a la variable de sombreado y otra que omite el sombreado.

    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
    

    En el ejemplo anterior, se declara la variable shadowString en la clase base y se sombrea dicha variable en la clase derivada. El procedimiento showStrings de la clase derivada muestra la versión de sombreado de la cadena cuando el nombre shadowString no está calificado. Luego, muestra la versión oculta cuando shadowString está calificado con la palabra clave MyBase .

Programación eficaz

Para reducir el riesgo de hacer referencia a una versión no deseada de una variable oculta, puede calificar por completo todas las referencias a una variable oculta. El ocultamiento presenta más de una versión de una variable con el mismo nombre. Cuando una instrucción de código hace referencia al nombre de variable, la versión en la que el compilador resuelve la referencia depende de factores como la ubicación de la instrucción de código y la presencia de una cadena de calificación. Esto puede aumentar el riesgo de hacer referencia a una versión errónea de la variable.

Vea también

Tareas

Cómo: Ocultar una variable con el mismo nombre que su variable (Visual Basic)

Cómo: Ocultar una variable heredada (Visual Basic)

Referencia

Shadows (Visual Basic)

Overrides (Visual Basic)

Conceptos

Referencias a elementos declarados (Visual Basic)

Sombrear en Visual Basic

Diferencias entre sombrear y reemplazar (Visual Basic)

Me, My, MyBase y MyClass en Visual Basic

Fundamentos de la herencia (Visual Basic)