Anvisningar: Kontrollera omfånget för en variabel (Visual Basic)
Normalt är en variabel i omfånget, eller synlig som referens, i hela regionen där du deklarerar den. I vissa fall kan variabelns åtkomstnivå påverka dess omfång.
Mer information finns i Omfång i Visual Basic.
Omfång på block- eller procedurnivå
Så här gör du bara en variabel synlig inom ett block
Placera dim-instruktionen för variabeln mellan de inledande och avslutande deklarationsinstruktionerna för det blocket, till exempel mellan - och-uttrycken
Next
For
för enFor
loop.Du kan bara referera till variabeln inifrån blocket.
Så här gör du bara en variabel synlig inom en procedur
Placera -instruktionen
Dim
för variabeln i proceduren men utanför alla block (till exempel ettWith
...End With
block).Du kan bara referera till variabeln inifrån proceduren, inklusive i alla block som ingår i proceduren.
Omfång på modul- eller namnområdesnivå
För enkelhetens skull gäller modulnivån för en term lika för moduler, klasser och strukturer. Åtkomstnivån för en modulnivåvariabel avgör dess omfång. Namnområdet som innehåller modulen, klassen eller strukturen påverkar också omfånget.
Så här gör du en variabel synlig i en modul, klass eller struktur
Placera -instruktionen
Dim
för variabeln i modulen, klassen eller strukturen, men utanför alla procedurer.Inkludera nyckelordet Privat i -instruktionen
Dim
.Du kan referera till variabeln var som helst i modulen, klassen eller strukturen, men inte utanför den.
Så här gör du en variabel synlig i ett namnområde
Placera -instruktionen
Dim
för variabeln i modulen, klassen eller strukturen, men utanför alla procedurer.Inkludera nyckelordet Vän eller Offentligt i -instruktionen
Dim
.Du kan referera till variabeln var som helst i namnområdet som innehåller modulen, klassen eller strukturen.
Exempel
I följande exempel deklareras en variabel på modulnivå och dess synlighet begränsas till kod i modulen.
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
I föregående exempel kan alla procedurer som definierats i modulen demonstrateScope
referera till variabeln strMsg
String
. När proceduren usePrivateVariable
anropas visas innehållet i strängvariabeln strMsg
i en dialogruta.
Med följande ändring i föregående exempel kan strängvariabeln strMsg
refereras till med kod var som helst i namnområdet för deklarationen.
Public strMsg As String
Robust programmering
Ju smalare omfånget för en variabel är, desto färre affärsmöjligheter har du för att oavsiktligt referera till den i stället för en annan variabel med samma namn. Du kan också minimera problem med referensmatchning.
.NET Framework-säkerhet
Ju smalare omfånget för en variabel är, desto mindre är risken för att skadlig kod kan använda den felaktigt.