Procedure: Een overgenomen variabele verbergen (Visual Basic)
Een afgeleide klasse neemt alle definities van de basisklasse over. Als u een variabele wilt definiëren met dezelfde naam als een element van de basisklasse, kunt u dat basisklasse-element verbergen of schaduwen wanneer u de variabele in de afgeleide klasse definieert. Als u dit doet, heeft code in de afgeleide klasse toegang tot uw variabele, tenzij deze het schaduwmechanisme expliciet omzeilt.
Een andere reden waarom u een overgenomen variabele wilt verbergen, is om te beschermen tegen revisie van basisklassen. De basisklasse kan een wijziging ondergaan die het element wijzigt dat u overneemt. Als dit gebeurt, dwingt de Shadows
wijzigingsfunctie verwijzingen van de afgeleide klasse om te worden omgezet in uw variabele, in plaats van naar het basisklasse-element.
Een overgenomen variabele verbergen
Zorg ervoor dat de variabele die u wilt verbergen, is gedeclareerd op klasseniveau (buiten elke procedure). Anders hoeft u deze niet te verbergen.
Schrijf in uw afgeleide klasse een Dim-instructie die uw variabele declareren. Gebruik dezelfde naam als die van de overgenomen variabele.
Neem het trefwoord Schaduwen op in de declaratie.
Wanneer code in de afgeleide klasse verwijst naar de naam van de variabele, wordt de verwijzing naar uw variabele omgezet door de compiler.
In het volgende voorbeeld ziet u schaduw van een overgenomen variabele:
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
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 wordt verwezen naar een onbedoelde versie van een schaduwvariabele. U kunt dit risico verlagen door alle verwijzingen naar een schaduwvariabele volledig in aanmerking te komen.
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: toegang krijgen tot een variabele die is verborgen door een afgeleide klasse
- Overschrijft
- Ik, My, MyBase en MyClass
- Basisprincipes van overname