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
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.
Vytvořte subregionu, pokud již neexistuje.
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
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.
Definujte třídy odvozené od třídy proměnné, pokud již neexistuje.
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
Koncepty
Odkazy na deklarované elementy (Visual Basic)
Rozdíly mezi stínováním a přepsáním (Visual Basic)