Postupy: Přístup k proměnné skryté odvozenou třídou (Visual Basic)
Když kód v odvozené třídě přistupuje k proměnné, kompilátor obvykle přeloží odkaz na nejbližší přístupnou verzi, to znamená, že přístupná verze nejmenší odvozené kroky zpět od přístupové třídy. Pokud je proměnná definována v odvozené třídě, kód obvykle přistupuje k této definici.
Pokud odvozená proměnná třídy stínuje proměnnou v základní třídě, skryje verzi základní třídy. K proměnné základní třídy ale můžete přistupovat tak, že ji opravíte pomocí klíčového MyBase
slova.
Přístup k proměnné základní třídy skryté odvozenou třídou
Ve výrazu nebo příkazu přiřazení před název
MyBase
proměnné zadejte klíčové slovo a tečku (.
).Kompilátor přeloží odkaz na verzi základní třídy proměnné.
Následující příklad znázorňuje stínování prostřednictvím dědičnosti. Vytváří dva odkazy, jeden, který přistupuje k proměnné stínování, a druhý, který obchází stínování.
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
Předchozí příklad deklaruje proměnnou
shadowString
v základní třídě a stínuje ji v odvozené třídě. ProcedurashowStrings
v odvozené třídě zobrazí stínovací verzi řetězce, pokud názevshadowString
není kvalifikovaný. Potom zobrazí stínovou verzi, pokudshadowString
je kvalifikována pomocí klíčovéhoMyBase
slova.
Robustní programování
Pokud chcete snížit riziko odkazování na nezamýšlenou verzi stínované proměnné, můžete plně kvalifikovat všechny odkazy na stínovanou proměnnou. Stínování zavádí více než jednu verzi proměnné se stejným názvem. Pokud příkaz kódu odkazuje na název proměnné, verze, na kterou kompilátor přeloží odkaz, závisí na faktorech, jako je umístění příkazu kódu a přítomnost opravňujícího řetězce. To může zvýšit riziko odkazování na nesprávnou verzi proměnné.