Область действия переменной для пользователей Visual Basic 6.0
Обновлен: Ноябрь 2007
В 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 имеет только область видимости блока.
Однако время жизни переменной по-прежнему соответствует времени жизни всей процедуры. независимо от того, имеет ли переменная область видимости блока или область действия процедуры. Если переменная объявлена внутри блока и вход в этот блок выполняется несколько раз за время жизни процедуры, необходимо инициализировать переменную, чтобы она не принимала непредвиденных значений.