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
Kontrollera att variabeln som du vill dölja deklareras på klassnivå (utanför valfri procedur). Annars behöver du inte dölja det.
I din härledda klass skriver du en Dim-instruktion som deklarerar variabeln. Använd samma namn som för den ärvda variabeln.
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. 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
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.