变量范围(针对 Visual Basic 6.0 用户)
更新:2007 年 11 月
Visual Basic 2008 更新了局部变量范围,旨在支持块范围并改善结构化编程。
Visual Basic 6.0
在 Visual Basic 6.0 中,在过程内部声明的任何变量都有过程范围,因此可在同一过程内部的任何地方访问该变量。如果一个变量是在某个块(即由 End、Loop 或 Next 语句终止的一组语句)的内部声明的,仍可在该块的外部访问这个变量。
下面的示例说明过程范围,其中块为一个 For 循环:
For I = 1 To 10
Dim N As Long = 0
' N has procedure scope although it was declared within a block.
N = N + Incr(I)
Next I
W = Base ^ N
' N is still visible outside the block it is declared in.
Visual Basic 2005
在 Visual Basic 2008 中,在块内部声明的变量具有块范围,不可从块外部访问。前一个示例可重新编写为:
Dim N As Long = 0
' N is declared outside the block and has procedure scope.
For I As Integer = 1 To 10
' I is declared by the For statement and therefore within the block.
N = N + Incr(I)
Next I
w = Base ^ N
' N is visible outside the block but I is not.
由于 For 语句将 I 声明为 For 块的一部分,因此 I 仅具有块范围。
但是,变量的生存期仍是整个过程的生存期。不管该变量具有块范围还是过程范围,这一点都不会改变。如果在块内部声明变量,且在过程的生存期期间几次进入该块,则应初始化该变量,以避免出现意外值。