变量范围(针对 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 仅具有块范围。

但是,变量的生存期仍是整个过程的生存期。不管该变量具有块范围还是过程范围,这一点都不会改变。如果在块内部声明变量,且在过程的生存期期间几次进入该块,则应初始化该变量,以避免出现意外值。

请参见

概念

编程元素支持更改总结