Jak: ukrywanie zmiennej z taką samą nazwę jak zmienna (Visual Basic)
Można ukryć zmiennej przez przesłanianie go, to znaczy poprzez przedefiniowanie jej ze zmienną o tej samej nazwie.Można cień zmienną, którą chcesz ukryć na dwa sposoby:
Cieniowanie, poprzez zakres. Można go cienia poprzez zakres przez redeclaring go wewnątrz podregionem regionu zawierającego zmienną, którą chcesz ukryć.
Przesłanianie poprzez dziedziczenie. Jeśli zmienna, aby ukryć jest zdefiniowany na poziomie klasy, można cień go poprzez dziedziczenie przez redeclaring z Cienie (Visual Basic) słowa kluczowego w klasie pochodnej.
Dwa sposoby, aby ukryć zmiennej
Aby ukryć zmiennej przez przesłanianie go poprzez zakres
Określanie obszaru, Definiowanie zmiennej, który chcesz ukryć i określają podregionu, w którym go przedefiniować ze zmienną użytkownika.
Region zmiennej
Podregion dopuszczalnego dla przedefiniowanie jej
Moduł
Klasa w obrębie modułu
Klasa
Podklasy w klasie
Procedury w ramach klasy
Nie można przedefiniować zmiennej procedury w bloku, w ramach tej procedury, na przykład w If...End If budowy lub For pętli.
Podregion należy utworzyć, jeśli jeszcze nie istnieje.
W ramach podregionu, należy napisać Dim instrukcji (Visual Basic) deklarowanie zmiennej przesłaniania.
Gdy kod wewnątrz podregionu odnosi się do nazwy zmiennej, kompilator usuwa odwołanie do zmiennej przesłaniania.
Poniższy przykład ilustruje przesłanianie poprzez zakres, jak również odniesienia, która pomija przesłanianie.
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
Poprzedni przykład deklaruje zmienną num zarówno na poziomie modułu, jak i na poziomie procedury (w procedurze show).Zmienna lokalna num cieni zmiennej poziom moduł num w show, więc zmienna lokalna jest ustawiona na 2.Jednakże, nie istnieje żadne zmiennej lokalnej cień num w useModuleLevelNum procedury.W związku z tym useModuleLevelNum ustawia wartość zmiennej moduł poziomu 1.
MsgBox Wywołania wewnątrz show pomija przesłaniania mechanizmu przez kwalifikujących się num z nazwą modułu.W związku z tym Wyświetla zmiennej poziom moduł w zmiennej lokalnej.
Aby ukryć zmiennej przez przesłanianie go poprzez dziedziczenie
Upewnij się, że zmienną, którą chcesz ukryć jest zadeklarowana w klasie i na poziomie klasy (poza jakiejkolwiek procedury).W przeciwnym razie nie można go cienia poprzez dziedziczenie.
Definiowanie klasy pochodzącej od klasy zmiennej Jeśli już nie istnieje.
Wewnątrz klasy pochodnej zapisu Dim instrukcji zadeklarowanie zmiennej użytkownika.Zawiera Cienie (Visual Basic) słowa kluczowego w zgłoszeniu.
Gdy kod w klasie pochodnej odnosi się do nazwy zmiennej, kompilator usuwa odwołanie do zmiennej użytkownika.
Poniższy przykład ilustruje przesłanianie poprzez dziedziczenie.Powoduje to dwa odniesienia, jedną, który uzyskuje dostęp do zmiennej przesłaniania i jedną, która pomija przesłanianie.
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
Poprzedni przykład deklaruje zmienną shadowString w klasie bazowej i cieni ją w klasie pochodnej.Procedura showStrings w klasie pochodnej Wyświetla przesłaniania wersji łańcucha po nazwę shadowString nie kwalifikuje się.Następnie wyświetla tekst z cieniem wersji podczas shadowString jest kwalifikowaną z MyBasesłowa kluczowego.
Stabilne programowanie
Przesłanianie wprowadzono więcej niż jedną wersję zmiennej o tej samej nazwie.Instrukcję kodu odnosi się do nazwy zmiennej, wersji, do których kompilator usuwa odwołanie, zależy od czynników, takich jak położenie instrukcji kodu i obecność dostosowywanego ciąg.Zwiększy to ryzyko odnoszące się do niezamierzonego wersję zmiennej cieniowany.Aby obniżyć ryzyko, pełni kwalifikujących się wszystkie odwołania do zmiennej cieniowany.
Zobacz też
Zadania
Jak: ukrywanie zmiennej dziedziczone (Visual Basic)
Jak: dostęp do zmiennej ukryte w klasie pochodnej (Visual Basic)
Informacje
Koncepcje
Odniesienia do zadeklarowanych elementów (Visual Basic)
Cieniowanie w języku Visual Basic
Różnice między cieniowanie i przesłanianie (Visual Basic)