Postupy: Řízení rozsahu proměnné (Visual Basic)
Za normálních okolností je proměnná v oboru nebo viditelná pro referenci v celé oblasti, ve které ji deklarujete. V některých případech může úroveň přístupu proměnné ovlivnit její rozsah.
Další informace naleznete v tématu Obor v jazyce Visual Basic.
Rozsah na úrovni bloku nebo procedury
Zobrazení proměnné pouze v rámci bloku
Umístěte příkaz Dim pro proměnnou mezi iniciační a ukončovací deklarace prohlášení tohoto bloku, například mezi
For
příkazy smyčky aNext
příkazy smyčkyFor
.Na proměnnou můžete odkazovat pouze v rámci bloku.
Zobrazení proměnné pouze v rámci procedury
Dim
Umístěte příkaz pro proměnnou uvnitř procedury, ale mimo jakýkoli blok (napříkladWith
blok ...End With
).Na proměnnou můžete odkazovat pouze v rámci procedury, včetně uvnitř jakéhokoli bloku obsaženého v postupu.
Rozsah na úrovni modulu nebo oboru názvů
Pro usnadnění činnosti platí stejná úroveň modulu s jedním termínem pro moduly, třídy a struktury. Úroveň přístupu proměnné na úrovni modulu určuje její rozsah. Obor názvů, který obsahuje modul, třídu nebo strukturu, má vliv také na obor.
Zobrazení proměnné v celém modulu, třídě nebo struktuře
Dim
Umístěte příkaz pro proměnnou uvnitř modulu, třídy nebo struktury, ale mimo jakoukoli proceduru.Proměnnou můžete odkazovat odkudkoliv v modulu, třídě nebo struktuře, ale ne mimo ni.
Zobrazení proměnné v celém oboru názvů
Dim
Umístěte příkaz pro proměnnou uvnitř modulu, třídy nebo struktury, ale mimo jakoukoli proceduru.Na proměnnou můžete odkazovat odkudkoliv v oboru názvů obsahujícího modul, třídu nebo strukturu.
Příklad
Následující příklad deklaruje proměnnou na úrovni modulu a omezuje její viditelnost na kód v rámci modulu.
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
V předchozím příkladu mohou všechny postupy definované v modulu demonstrateScope
odkazovat na proměnnou String
strMsg
. usePrivateVariable
Při volání procedury se zobrazí obsah řetězcové proměnné strMsg
v dialogovém okně.
S následující změnou předchozího příkladu lze řetězcovou proměnnou strMsg
odkazovat kódem kdekoli v oboru názvů jeho deklarace.
Public strMsg As String
Robustní programování
Čím užší je rozsah proměnné, tím méně příležitostí, které máte pro náhodné odkazování na jinou proměnnou se stejným názvem. Můžete také minimalizovat problémy s porovnávání odkazů.
Zabezpečení rozhraní .NET Framework
Čím užší je rozsah proměnné, tím menší je pravděpodobnost, že škodlivý kód může zneužit.