Partager via


Comment : accéder à une variable masquée par une classe dérivée (Visual Basic)

Lorsque le code d'une classe dérivée accède à une variable, le compilateur résout normalement la référence à la version accessible la plus proche, c'est-à-dire la version accessible la moins éloignée de la classe accédante. Si la variable est définie dans la classe dérivée, le code accède normalement à cette définition.

Si la variable de classe dérivée fait de l’ombre à une variable de la classe de base, elle masquera cette dernière. Toutefois, vous pouvez accéder à la variable de classe de base en la qualifier avec le MyBasemot-clé.

Pour accéder à une variable de classe de base masquée par une classe dérivée

  • Dans une instruction d’expression ou d’affectation, précédez le nom de la variable avec le MyBase mot-clé et un point (.).

    Le compilateur résout la référence à la version de classe de base de la variable.

    L’exemple suivant illustre la copie shadow par héritage. Il effectue deux références, l’une qui accède à la variable d’ombre et l’autre qui contourne l’ombre.

    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
    

    L'exemple précédent déclare la variable shadowString dans la classe de base et l'ombrage dans la classe dérivée. La procédure showStrings de la classe dérivée affiche la version de shadowing de la chaîne lorsque le nom shadowString n’est pas qualifié. Il affiche ensuite la version ombrée lorsque shadowString est qualifié avec le mot-clé MyBase.

Programmation fiable

Pour réduire le risque de faire référence à une version inattendue d’une variable ombrée, vous pouvez qualifier entièrement toutes les références à une variable ombrée. La copie shadow introduit plusieurs versions d’une variable portant le même nom. Lorsqu’une instruction de code fait référence au nom de la variable, la version à laquelle le compilateur résout la référence dépend de facteurs tels que l’emplacement de l’instruction de code et la présence d’une chaîne éligible. Cela peut augmenter le risque de faire référence à la version incorrecte de la variable.

Voir aussi