Megosztás a következőn keresztül:


Útmutató: Változó hatókörének szabályozása (Visual Basic)

A változók általában hatókörben vagy referenciaként láthatók az egész régióban, amelyben deklarálják. Bizonyos esetekben a változó hozzáférési szintje befolyásolhatja a hatókörét.

További információ: Hatókör a Visual Basicben.

Hatókör blokk- vagy eljárásszinten

Változó csak egy blokkon belül láthatóvá tétele

  • Helyezze a változó dim utasítását az adott blokk kezdeményező és megszüntető deklarációs utasításai közé, például egy For hurok és Next egy For ciklus utasításai közé.

    A változóra csak a blokkból hivatkozhat.

Változó csak egy eljáráson belül láthatóvá tétele

  • Helyezze el a Dim változó utasítását az eljáráson belül, de bármely blokkon kívül (például With...End With blokkon).

    A változóra csak az eljáráson belül hivatkozhat, beleértve az eljárásban található blokkokat is.

Hatókör modul- vagy névtérszinten

A kényelem érdekében az egykifejezéses modulszint egyformán vonatkozik a modulokra, osztályokra és struktúrákra. A modulszintű változó hozzáférési szintje határozza meg a hatókörét. A modult, osztályt vagy struktúrát tartalmazó névtér is befolyásolja a hatókört.

Változó láthatóvá tétele egy modulban, osztályban vagy struktúrában

  1. Helyezze a Dim változó utasítását a modulba, az osztályba vagy a struktúrába, de bármilyen eljáráson kívül.

  2. Adja meg a privát kulcsszót az Dim utasításban.

  3. A változót a modulon, az osztályon vagy a struktúrán belül bárhonnan megtekintheti, kívülről azonban nem.

Változó láthatóvá tétele a névtérben

  1. Helyezze a Dim változó utasítását a modulba, az osztályba vagy a struktúrába, de bármilyen eljáráson kívül.

  2. Adja meg a Barát vagy a Nyilvános kulcsszót az Dim utasításban.

  3. A változóra a modult, osztályt vagy struktúrát tartalmazó névtéren belül bárhonnan hivatkozhat.

Példa

Az alábbi példa egy változót deklarál modulszinten, és a modulon belüli kódra korlátozza annak láthatóságát.

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  

Az előző példában a modulban demonstrateScope definiált összes eljárás hivatkozhat a String változóra strMsg. usePrivateVariable Az eljárás meghívásakor megjeleníti a sztringváltozó strMsg tartalmát egy párbeszédpanelen.

Az előző példában az alábbi módosítással a sztringváltozó strMsg kóddal hivatkozható a deklaráció névterében.

Public strMsg As String  

Robusztus programozás

Minél szűkebb a változó hatóköre, annál kevesebb lehetősége van arra, hogy véletlenül egy másik azonos nevű változó helyett hivatkozik rá. A hivatkozás-egyeztetés problémáit is minimalizálhatja.

.NET-keretrendszer Security

Minél szűkebb egy változó hatóköre, annál kisebb az esélye annak, hogy a rosszindulatú kód helytelenül használja azt.

Lásd még