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. ProcedurenshowStrings
i den härledda klassen visar skuggningsversionen av strängen när namnetshadowString
inte är kvalificerat. Den visar sedan den skuggade versionen närshadowString
den är kvalificerad med nyckelordetMyBase
.
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.