Dela via


Gör så här: Dölj en ärvd variabel (Visual Basic)

En härledd klass ärver alla definitioner av basklassen. Om du vill definiera en variabel med samma namn som ett element i basklassen kan du dölja eller skugga det basklasselementet när du definierar variabeln i den härledda klassen. Om du gör detta kommer kod i den härledda klassen åt din variabel om den inte uttryckligen kringgår skuggningsmekanismen.

En annan anledning till att du kanske vill dölja en ärvd variabel är att skydda mot basklassrevision. Basklassen kan genomgå en ändring som ändrar det element som du ärver. Om detta händer Shadows tvingar modifieraren referenser från den härledda klassen att matchas till din variabel, i stället för till basklasselementet.

Så här döljer du en ärvd variabel

  1. Kontrollera att variabeln som du vill dölja deklareras på klassnivå (utanför valfri procedur). Annars behöver du inte dölja det.

  2. I din härledda klass skriver du en Dim-instruktion som deklarerar variabeln. Använd samma namn som för den ärvda variabeln.

  3. Inkludera nyckelordet Skuggor i deklarationen.

    När kod i den härledda klassen refererar till variabelnamnet löser kompilatorn referensen till variabeln.

    I följande exempel visas skuggning av en ärvd variabel:

    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  
    

    Föregående exempel deklarerar variabeln shadowString i basklassen och skuggar den i den härledda klassen. Proceduren ShowStrings i den härledda klassen visar skuggningsversionen av strängen när namnet shadowString inte är kvalificerat. Den visar sedan den skuggade versionen när shadowString den är kvalificerad med nyckelordet MyBase .

Robust programmering

Skuggning introducerar mer än en version av en variabel med samma namn. När en kodsats refererar till variabelnamnet beror den version som kompilatorn löser referensen till på faktorer som platsen för kodsatsen och förekomsten av en kvalificerande sträng. Detta kan öka risken för att referera till en oavsiktlig version av en skuggad variabel. Du kan minska den risken genom att helt kvalificera alla referenser till en skuggad variabel.

Se även