Procedura: accedere a una variabile nascosta da una classe derivata (Visual Basic)

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

Se la variabile di classe derivata applica lo shadowing a una variabile nella classe di base, nasconde la versione della classe di base. È tuttavia possibile accedere alla variabile della classe di base qualificandola con la parola chiave MyBase.

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

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

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

    Nell'esempio seguente viene illustrato lo shadowing tramite ereditarietà. Vengono creati due riferimenti, uno che accede alla variabile di shadowing e uno che 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 di base e sottoposta a shadowing nella classe derivata. La routine showStrings nella classe derivata visualizza la versione per lo shadowing della stringa quando il nome shadowString non è qualificato. Visualizza quindi la versione sottoposta a shadowing quando shadowString è qualificato con la parola chiave MyBase.

Programmazione efficiente

Per ridurre il rischio di fare riferimento a una versione non intenzionale di una variabile sottoposta a shadowing, è possibile qualificare completamente tutti i riferimenti a una variabile sottoposta a shadowing. Lo shadowing consente di introdurre più versioni di una variabile con lo stesso nome. Quando un'istruzione di codice fa riferimento al nome della variabile, la versione con cui il compilatore risolve il riferimento dipende da fattori quali la posizione dell'istruzione di codice e la presenza di una stringa qualificata. Questo comportamento può aumentare il rischio di fare riferimento a una versione errata della variabile.

Vedi anche