Variable Scope Changes in VB .NET


Visual Basic .NET Unleashed
By Paul Kimmel
Table of Contents
Chapter 2.  Out with the Old, In with the New

Variable Scope Changes in VB .NET

Visual Basic .NET supports block-level scope. Generally, it's best to declare variables in as narrow a scope as possible; this rule directly supports the "don't-use-global- variables " rule.

VB6 variables within a For...Next loop are accessible in the scope containing the For...Next loop. Visual Basic .NET variables in a For...Next loop aren't accessible in the outer scope. Listing 2.12 demonstrates VB6 scope and Listing 2.13 demonstrates the block scope revision in VB .NET.

Listing 2.12 VB6 scope is limited to procedure scope
  1:  Private Sub Command6_Click()  2:  Dim I As Integer  3:  For I = 1 To 100  4:  Dim D As Integer  5:  D = D + 1  6:  Next I  7:  MsgBox D  8:  End Sub 

In VB6, line 7 displays 100. D has procedure scope even though it was defined in the For...Next loop. In VB .NET, D has block scope and line 7 causes the error The name D is not defined (see Listing 2.13 for a revision).

Listing 2.13 VB .NET supports block scope
 Sub BlockScope()     Dim I, D As Integer     For I = 1 To 100       D = D + 1     Next I     MsgBox End Sub 

For D to be accessible outside the For...Next statement, the variable must be defined outside the For...Next loop; that is, D must be defined in the scope in which it's used.

Any variable defined in an outer scope is visible to narrower scopes but not broader scopes. For example, a procedure variable, like D, is visible to the For...Next block's scope, which is narrower than the procedure but not accessible outside of the procedure.


Visual BasicR. NET Unleashed
Visual BasicR. NET Unleashed
Year: 2001
Pages: 222 © 2008-2017.
If you may any questions please contact us: