Sdílet prostřednictvím


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ě. 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é