Condividi tramite


Procedura: Nascondere una variabile ereditata (Visual Basic)

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

  1. 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.

  2. All'interno della classe derivata scrivere un'istruzione Dim che dichiara la variabile. Usare lo stesso nome della variabile ereditata.

  3. 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 Class  
    

    L'esempio precedente dichiara la variabile shadowString nella classe di base e che la nasconde nella classe derivata. La routine ShowStrings nella classe derivata visualizza la versione shadowing della stringa quando il nome shadowString non è qualificato. Viene quindi visualizzata la versione ombreggiata quando shadowString è qualificata con la MyBase parola 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