Ú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 ésNext
egyFor
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áulWith
...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
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.Adja meg a privát kulcsszót az
Dim
utasításban.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
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.Adja meg a Barát vagy a Nyilvános kulcsszót az
Dim
utasításban.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.