Porady: kontrolowanie zakresu zmiennej (Visual Basic)
Zwykle zmienna znajduje się w zakresie lub jest widoczna dla odwołania w całym regionie, w którym ją deklarujesz. W niektórych przypadkach poziom dostępu zmiennej może mieć wpływ na jej zakres.
Aby uzyskać więcej informacji, zobacz Temat Zakres w Visual Basic.
Zakres na poziomie bloku lub procedury
Aby ustawić zmienną widoczną tylko w bloku
Umieść instrukcję Dim dla zmiennej między instrukcjami inicjowania i zakończenia deklaracji tego bloku, na przykład między
For
instrukcjamiFor
iNext
pętli.Możesz odwołać się do zmiennej tylko z bloku.
Aby ustawić zmienną widoczną tylko w ramach procedury
Umieść instrukcję
Dim
zmiennej wewnątrz procedury, ale poza dowolnym blokiemWith
(takim jak blok ...End With
).Można odwołać się do zmiennej tylko z poziomu procedury, w tym wewnątrz dowolnego bloku zawartego w procedurze.
Zakres na poziomie modułu lub przestrzeni nazw
Dla wygody poziom modułu pojedynczego terminu ma zastosowanie w równym stopniu do modułów, klas i struktur. Poziom dostępu zmiennej poziomu modułu określa jego zakres. Przestrzeń nazw zawierająca moduł, klasę lub strukturę również wpływa na zakres.
Aby uwidocznić zmienną w module, klasie lub strukturze
Umieść instrukcję
Dim
dla zmiennej wewnątrz modułu, klasy lub struktury, ale poza dowolną procedurą.Dołącz słowo kluczowe Private w instrukcji
Dim
.Możesz odwołać się do zmiennej z dowolnego miejsca w module, klasie lub strukturze, ale nie poza nią.
Aby uwidocznić zmienną w przestrzeni nazw
Umieść instrukcję
Dim
dla zmiennej wewnątrz modułu, klasy lub struktury, ale poza dowolną procedurą.Dołącz słowo kluczowe Friend lub Public w instrukcji
Dim
.Możesz odwołać się do zmiennej z dowolnego miejsca w przestrzeni nazw zawierającej moduł, klasę lub strukturę.
Przykład
Poniższy przykład deklaruje zmienną na poziomie modułu i ogranicza widoczność kodu w module.
Module demonstrateScope
Private strMsg As String
Sub initializePrivateVariable()
strMsg = "This variable cannot be used outside this module."
End Sub
Sub usePrivateVariable()
MsgBox(strMsg)
End Sub
End Module
W poprzednim przykładzie wszystkie procedury zdefiniowane w module demonstrateScope
mogą odwoływać się do zmiennej String
strMsg
. Po wywołaniu usePrivateVariable
procedury wyświetla zawartość zmiennej strMsg
ciągu w oknie dialogowym.
Po wykonaniu poniższych zmian w poprzednim przykładzie zmienna strMsg
ciągu może być odwoływanych przez kod w dowolnym miejscu w przestrzeni nazw jego deklaracji.
Public strMsg As String
Niezawodne programowanie
Im węższy zakres zmiennej, tym mniejsza liczba szans przypadkowego odwoływania się do niej zamiast innej zmiennej o tej samej nazwie. Można również zminimalizować problemy z dopasowaniem odwołań.
Zabezpieczenia.NET Framework
Zawęższy zakres zmiennej, tym mniejsze są szanse na niewłaściwe użycie złośliwego kodu.