变量在你声明它的整个区域内都处于范围内,或者可见以供引用。 在某些情况下,变量 的访问级别 可能会影响其范围。
有关详细信息,请参阅 Visual Basic 中的范围。
块级别或过程级别的范围
使变量仅在块中可见
将变量的 Dim 语句 置于该块的启动和终止声明语句之间,例如
For循环的Next和For语句之间。只能从块内部引用变量。
使变量仅在子程序内可见
将变量的
Dim语句置于过程内部但在任何块(例如With...End With块)之外。只能从过程内引用变量,包括过程中包含的任何块内。
模块或命名空间级别的作用范围
为方便起见,单个术语 模块级别 同样适用于模块、类和结构。 模块级别变量的访问级别确定其范围。 包含模块、类或结构的命名空间也会影响范围。
使变量在整个模块、类或结构中可见
使变量在整个命名空间中可见
将
Dim变量的语句置于模块、类或结构中,但超出任何过程。在语句中包含 Friend 或
Dim关键字。可以从包含模块、类或结构的命名空间中的任何位置引用变量。
示例:
以下示例在模块级别声明一个变量,并将其可见性限制为模块中的代码。
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
在前面的示例中,模块demonstrateScope中定义的所有过程都可以引用变量StringstrMsg。 usePrivateVariable调用该过程时,它会在对话框中显示字符串变量strMsg的内容。
对前面的示例进行以下更改后,字符串变量 strMsg 可以通过代码在其声明的命名空间中的任何位置引用。
Public strMsg As String
可靠的编程
变量的范围越窄,意外引用它来代替另一个同名变量的机会就越少。 还可以最大程度地减少引用匹配的问题。
.NET Framework 安全性
变量的范围越窄,恶意代码可能利用它的可能性越小。