Condividi tramite


Procedura: accedere a una variabile nascosta da una classe derivata

Aggiornamento: novembre 2007

Quando il codice di una classe derivata accede a una variabile, il compilatore risolve in genere il riferimento alla versione accessibile più vicina, ovvero alla versione a cui è possibile accedere con il minor numero di passaggi di derivazione all'indietro a partire dalla classe. Se la variabile è definita nella classe derivata, normalmente il codice accede a tale definizione.

La variabile della classe derivata può nascondere una variabile della classe base. È tuttavia possibile accedere alla variabile della classe base qualificandola con la parola chiave MyBase.

Per accedere a una variabile della classe base nascosta da una classe derivata

  • In un'espressione o in un'istruzione di assegnazione inserire prima del nome della variabile la parola chiave MyBase e un punto (.).

    Il compilatore risolve il riferimento alla versione della classe base della variabile.

    Nell'esempio riportato di seguito viene illustrato lo shadowing tramite ereditarietà. Vengono creati due riferimenti: uno accede alla variabile di shadowing, mentre l'altro ignora lo shadowing.

    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
    

    Nell'esempio precedente la variabile shadowString viene dichiarata nella classe base e viene quindi nascosta nella classe derivata. La routine showStrings della classe derivata visualizza la versione di shadowing della stringa quando il nome shadowString non è qualificato, quindi visualizza la versione nascosta quando shadowString viene qualificato con la parola chiave MyBase.

Programmazione efficiente

Per ridurre il rischio di fare riferimento a una versione non desiderata di una variabile nascosta, è possibile specificare in modo completo tutti i riferimenti alla variabile nascosta. Il meccanismo di shadowing introduce più versioni di una variabile con lo stesso nome. Quando un'istruzione di codice fa riferimento al nome della variabile, la versione in cui il compilatore risolve il riferimento dipende da fattori quali la posizione dell'istruzione di codice e la presenza di una stringa di qualificazione. Questa caratteristica può aumentare il rischio di fare riferimento alla versione errata della variabile.

Vedere anche

Attività

Procedura: distinguere tra due elementi con lo stesso nome

Procedura: nascondere una variabile con lo stesso nome di un'altra variabile

Procedura: nascondere una variabile ereditata

Concetti

Risoluzione di un riferimento quando più variabili hanno lo stesso nome

Shadowing in Visual Basic

Differenze tra shadowing e override

Riferimenti

Shadows

Overrides

Altre risorse

Riferimenti a elementi dichiarati