Sdílet prostřednictvím


Jak přistupovat k proměnné, která je skrytá odvozenou třídou (Visual Basic)

Když kód v odvozené třídě přistupuje k proměnné, kompilátor obvykle vyřeší odkaz na nejbližší přístupnou verzi, tedy tu verzi, která je nejméně odvozenými kroky zpět od třídy, která přistupuje. 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 můžete ale přistupovat tak, že ji zpřístupníte pomocí klíčovým slovem MyBase.

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 vyřeší odkaz na verzi základní třídy té 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 ke stínované proměnné, a druhý, který obchází zakrývání proměnné.

    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ě. Procedura showStrings v odvozené třídě zobrazí stínovací verzi řetězce, pokud název shadowString není kvalifikovaný. Potom zobrazí stínovou verzi, pokud shadowString je kvalifikována pomocí klíčového MyBase 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é.

Viz také