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 routineshowStrings
nella classe derivata visualizza la versione per lo shadowing della stringa quando il nomeshadowString
non è qualificato. Visualizza quindi la versione sottoposta a shadowing quandoshadowString
è qualificato con la parola chiaveMyBase
.
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
- Riferimenti a elementi dichiarati
- Shadowing in Visual Basic
- Differenze tra shadowing e override
- Procedura: nascondere una variabile con lo stesso nome di un'altra variabile
- Procedura: nascondere una variabile ereditata
- Shadows
- Overrides
- Me, My, MyBase e MyClass
- Nozioni fondamentali sull'ereditarietà