Dela via


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 NextFor för en For 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 ett With...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

  1. Placera -instruktionen Dim för variabeln i modulen, klassen eller strukturen, men utanför alla procedurer.

  2. Inkludera nyckelordet Privat i -instruktionen Dim .

  3. 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

  1. Placera -instruktionen Dim för variabeln i modulen, klassen eller strukturen, men utanför alla procedurer.

  2. Inkludera nyckelordet Vän eller Offentligt i -instruktionen Dim .

  3. 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 strMsgString . 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.

Se även