Dela via


Anvisningar: Få åtkomst till en variabel som döljs av en härledd klass (Visual Basic)

När kod i en härledd klass får åtkomst till en variabel, löser kompilatorn normalt referensen till den närmast tillgängliga versionen, dvs. den tillgängliga versionen de minsta härledningsstegen bakåt från åtkomstklassen. Om variabeln definieras i den härledda klassen kommer koden normalt åt den definitionen.

Om variabeln härledd klass skuggar en variabel i basklassen döljer den basklassversionen. Du kan dock komma åt basklassvariabeln genom att kvalificera den med nyckelordet MyBase .

Så här får du åtkomst till en basklassvariabel som döljs av en härledd klass

  • I ett uttryck eller en tilldelningsinstrukation föregår du variabelnamnet med nyckelordet MyBase och en punkt (.).

    Kompilatorn löser referensen till basklassversionen av variabeln.

    I följande exempel visas skuggning genom arv. Den gör två referenser, en som kommer åt skuggvariabeln och en som kringgår skuggningen.

    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

Om du vill minska risken för att referera till en oavsiktlig version av en skuggad variabel kan du helt kvalificera alla referenser till en skuggad variabel. 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 fel version av variabeln.

Se även