Procedure: Toegang krijgen tot een variabele die is verborgen door een afgeleide klasse (Visual Basic)
Wanneer code in een afgeleide klasse toegang heeft tot een variabele, lost de compiler normaal gesproken de verwijzing op naar de dichtstbijzijnde toegankelijke versie, dat wil gezegd, de toegankelijke versie die de weinigste derivationale stappen achteruit van de toegangsklasse teruggaat. Als de variabele is gedefinieerd in de afgeleide klasse, heeft de code normaal gesproken toegang tot die definitie.
Als de afgeleide klassevariabele een variabele in de basisklasse schaduwt, wordt de versie van de basisklasse verborgen. U hebt echter toegang tot de basisklassevariabele door deze te kwalificeren met het MyBase
trefwoord.
Toegang krijgen tot een basisklassevariabele die is verborgen door een afgeleide klasse
In een expressie of toewijzingsinstructie gaat u vooraf aan de naam van de variabele met het
MyBase
trefwoord en een punt (.
).De compiler lost de verwijzing naar de basisklasseversie van de variabele op.
In het volgende voorbeeld ziet u schaduw door overname. Het maakt twee verwijzingen, een die toegang heeft tot de schaduwvariabele en een die de schaduw omzeilt.
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
Het voorgaande voorbeeld declareert de variabele
shadowString
in de basisklasse en schaduwt deze in de afgeleide klasse. De procedureshowStrings
in de afgeleide klasse geeft de schaduwversie van de tekenreeks weer wanneer de naamshadowString
niet is gekwalificeerd. Vervolgens wordt de schaduwversie weergegeven wanneershadowString
deze wordt gekwalificeerd met hetMyBase
trefwoord.
Robuuste programmering
Als u het risico wilt verlagen dat wordt verwezen naar een onbedoelde versie van een schaduwvariabele, kunt u alle verwijzingen naar een schaduwvariabele volledig kwalificeren. Schaduwen introduceert meer dan één versie van een variabele met dezelfde naam. Wanneer een code-instructie verwijst naar de naam van de variabele, is de versie waarnaar de compiler de verwijzing oplost afhankelijk van factoren zoals de locatie van de code-instructie en de aanwezigheid van een in aanmerking komende tekenreeks. Dit kan het risico verhogen dat naar de verkeerde versie van de variabele wordt verwezen.
Zie ook
- Verwijzingen naar gedeclareerde elementen
- Schaduw in Visual Basic
- Verschillen tussen schaduw en overschrijven
- Procedure: Een variabele verbergen met dezelfde naam als uw variabele
- Procedure: Een overgenomen variabele verbergen
- Schaduwen
- Overschrijft
- Ik, My, MyBase en MyClass
- Basisprincipes van overname