Sdílet prostřednictvím


Postupy: Skrytí proměnné se stejným názvem jako má vaše proměnná (Visual Basic)

Můžete skrýt pomocí proměnné zastínění ji, předefinujete s proměnnou se stejným názvem.Chcete-li stínové kopie proměnnou, kterou chcete skrýt dvěma způsoby:

  • Stínový provoz přes oboru. Můžete jej stínu prostřednictvím oboru podle redeclaring uvnitř podoblasti oblasti obsahující proměnnou, kterou chcete skrýt.

  • Stínový provoz prostřednictvím dědičnosti. Pokud chcete skrýt proměnná je definována na úrovni třídy, můžete můžete stínu jej prostřednictvím dědičnosti podle s redeclaring Shadows (Visual Basic) klíčové slovo v odvozené třídě.

Dva způsoby, jak skrýt proměnné

Skrýt proměnnou pomocí stínování prostřednictvím oboru

  1. Určení oblasti definování proměnné, kterou chcete skrýt a určit subregionu, ve kterém chcete předefinovat pomocí proměnné.

    Oblast proměnné

    Přípustné subregionu pro předefinování ji

    Modul

    Třída modulu

    Třída

    Podtřída ve třídě

    Postup v rámci třídy

    Nelze předefinovat postup proměnné v bloku v rámci postupu, například v If...End If konstrukci nebo For smyčky.

  2. Vytvořte subregionu, pokud již neexistuje.

  3. V rámci podoblasti, zápis Dim – příkaz (Visual Basic) deklarování proměnné stínového provozu.

    Pokud kód uvnitř subregionu odkazuje na název proměnné, kompilátor řeší odkaz na proměnnou stínového provozu.

    Následující příklad ukazuje stínový prostřednictvím oboru, jakož i odkaz na obchází stínování.

    Module shadowByScope
        ' The following statement declares num as a module-level variable.
        Public num As Integer
        Sub show()
            ' The following statement declares num as a local variable.
            Dim num As Integer
            ' The following statement sets the value of the local variable.
            num = 2
            ' The following statement displays the module-level variable.
            MsgBox(CStr(shadowByScope.num))
        End Sub
        Sub useModuleLevelNum()
            ' The following statement sets the value of the module-level variable.
            num = 1
            show()
        End Sub
    End Module
    

    V předchozím příkladu deklaruje proměnnou num postup na úrovni i na úrovni modulu (v postupu show).Lokální proměnná num stínů proměnné na úrovni modulu num v show, takže místní proměnná nastavena na 2.Neexistuje však žádný místní proměnné stín num v useModuleLevelNum postup.Proto useModuleLevelNum nastaví hodnotu proměnné na úrovni modulu 1.

    MsgBox Volání uvnitř show obchází stínového provozu mechanismu kvalifikováním num s názvem modulu.Proto zobrazí proměnná na úrovni modulu namísto místní proměnné.

Skrýt proměnnou pomocí stínování prostřednictvím dědičnosti

  1. Musí být ve třídě a na úrovni třídy (mimo jakýkoliv postup) je deklarována jako proměnnou, kterou chcete skrýt.V opačném případě nelze stínu prostřednictvím dědičnosti.

  2. Definujte třídy odvozené od třídy proměnné, pokud již neexistuje.

  3. Uvnitř odvozené třídy zápisu Dim prohlášení deklarování proměnné.Zahrnout Shadows (Visual Basic) klíčové slovo v prohlášení.

    Pokud kód v odvozené třídě odkazuje na název proměnné, kompilátor řeší odkaz na proměnné.

    Následující příklad ilustruje stínový prostřednictvím dědičnosti.Umožňuje dva odkazy, jeden, který přistupuje k proměnné stínového provozu a 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
    

    V předchozím příkladu deklaruje proměnnou shadowString v základní třídě a stínů v odvozené třídě.Postup showStrings v odvozené třídě Zobrazí verzi stínového provozu řetězce při název shadowString nejsou kvalifikované.Zobrazí verzi stínovaný při shadowString je kvalifikovaný s MyBaseklíčové slovo.

Robustní programování

Stínový provoz představuje více než jednu verzi proměnné se stejným názvem.Při výpisu kódu odkazuje název proměnné, verze, které řeší kompilátor odkaz závisí na faktorech, jako je například umístění příkazu kódu a přítomnost opravňující řetězec.To můžete zvýšit riziko ve vztahu k nezamýšleným verzi stínovaný proměnné.Toto riziko lze snížit pomocí plně kvalifikované všechny odkazy na stínovaný proměnné.

Viz také

Úkoly

Postupy: Skrytí zděděné proměnné (Visual Basic)

Postupy: Přístup k proměnné skryté odvozenou třídou (Visual Basic)

Referenční dokumentace

Overrides (Visual Basic)

Koncepty

Odkazy na deklarované elementy (Visual Basic)

Stínění v jazyce Visual Basic

Rozdíly mezi stínováním a přepsáním (Visual Basic)

Me, My, MyBase a MyClass v jazyce Visual Basic

Základní informace o dědičnosti (Visual Basic)