Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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 den härledda klassens variabel skuggar en variabel i basklassen, döljer den versionen i basklassen. 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
MyBaseoch 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 ClassFöregående exempel deklarerar variabeln
shadowStringi basklassen och skuggar den i den härledda klassen. ProcedurenshowStringsi den härledda klassen visar skuggningsversionen av strängen när namnetshadowStringinte är kvalificerat. Den visar sedan den skuggade versionen närshadowStringkvalificeras 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.