Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Una classe derivata eredita tutte le definizioni della relativa classe di base. Se si desidera definire una variabile usando lo stesso nome di un elemento della classe base, è possibile nascondere o nascondere tale elemento della classe di base quando si definisce la variabile nella classe derivata. In questo caso, il codice nella classe derivata accede alla variabile a meno che non ignori in modo esplicito il meccanismo di ombreggiatura.
Un altro motivo per cui si potrebbe voler nascondere una variabile ereditata consiste nel proteggere dalla revisione della classe base. La classe base potrebbe subire una modifica che modifica l'elemento ereditato. In questo caso, il Shadows modificatore forza la risoluzione dei riferimenti dalla classe derivata nella variabile anziché nell'elemento della classe base.
Per nascondere una variabile ereditata
Assicurarsi che la variabile che si vuole nascondere sia dichiarata a livello di classe (all'esterno di qualsiasi procedura). In caso contrario, non è necessario nasconderlo.
All'interno della classe derivata scrivere un'istruzione Dim che dichiara la variabile. Usare lo stesso nome della variabile ereditata.
Includere la parola chiave Shadows nella dichiarazione.
Quando il codice nella classe derivata fa riferimento al nome della variabile, il compilatore risolve il riferimento alla variabile.
L'esempio seguente illustra l'ombreggiatura di una variabile ereditata:
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 ClassL'esempio precedente dichiara la variabile
shadowStringnella classe di base e che la nasconde nella classe derivata. La routineShowStringsnella classe derivata visualizza la versione shadowing della stringa quando il nomeshadowStringnon è qualificato. Viene quindi visualizzata la versione ombreggiata quandoshadowStringè qualificata con laMyBaseparola chiave .
Programmazione efficiente
Shadowing introduce più versioni di una variabile con lo stesso nome. Quando un'istruzione di codice fa riferimento al nome della variabile, la versione a cui il compilatore risolve il riferimento dipende da fattori quali la posizione dell'istruzione di codice e la presenza di una stringa idonea. Ciò può aumentare il rischio di fare riferimento a una versione non intenzionale di una variabile ombreggiata. È possibile ridurre il rischio qualificando completamente tutti i riferimenti a una variabile ombreggiata.
Vedere anche
- Riferimenti agli elementi dichiarati
- Ombreggiatura in Visual Basic
- Differenze tra shadowing e override
- Procedura: Nascondere una variabile con lo stesso nome della variabile
- Procedura: Accedere a una variabile nascosta da una classe derivata
- Override
- Me, My, MyBase e MyClass
- Nozioni di base dell'ereditarietà