声明变量以指定其名称和特征。 变量的声明语句是 Dim 语句。 其位置和内容决定了变量的特征。
有关变量命名规则和注意事项,请参阅 声明的元素名称。
声明级别
局部变量和成员变量
局部变量是在过程中声明的变量。 成员变量是 Visual Basic 类型的成员;它在模块级别、类、结构或模块内声明,但不是在该类、结构或模块内部的任何过程中声明的。
共享变量和实例变量
在类或结构中,成员变量的类别取决于它是否共享。 如果它是使用 Shared 关键字声明的,则它是 一个共享变量,并且它存在于类或结构的所有实例之间共享的单个副本中。
否则,它是一个 实例变量,并为类或结构的每个实例创建一个单独的副本。 实例变量的给定副本仅适用于在其中创建实例的类或结构的实例。 它与类或结构中其他实例的实例变量副本无关。
声明数据类型
声明语句中的 As 子句允许定义要声明的变量的数据类型或对象类型。 可以为变量指定以下任一类型:
基本数据类型,例如
Boolean,Long或Decimal复合数据类型,如数组或结构
在应用程序或其他应用程序中定义的对象类型或类
接口类型,例如 IComparable 或 IDisposable
可以在一个语句中声明多个变量,而无需重复数据类型。 在以下语句中,变量i、j和k声明为类型Integer,l和m声明为Long,x和y声明为Single:
Dim i, j, k As Integer
' All three variables in the preceding statement are declared as Integer.
Dim l, m As Long, x, y As Single
' In the preceding statement, l and m are Long, x and y are Single.
有关数据类型的详细信息,请参阅 数据类型。 有关对象的详细信息,请参阅 Objects 和 Classes and Programming with Components。
局部类型推理
类型推理 用于确定在没有子句的情况下 As 声明的局部变量的数据类型。 编译器从初始化表达式的类型推断变量的类型。 这使你可以声明变量,而无需显式声明类型。 在以下示例中,num1和num2都被指定为整数类型。
Public Sub inferenceExample()
' Using explicit typing.
Dim num1 As Integer = 3
' Using local type inference.
Dim num2 = 3
End Sub
如果要使用本地类型推理, Option Infer 则必须设置为 On。 有关详细信息,请参阅 本地类型推理 和 Option Infer 语句。
声明变量的特征
变量的 生存期 是可供使用的时间段。 一般情况下,只要声明变量的元素(如过程或类)继续存在,变量就存在。 如果变量不需要在包含元素的生存期内继续存在,则无需在声明中进行任何特殊处理。 如果变量需要继续存在的时间长于其包含元素,则可以在其Static语句中包含Shared或Dim关键字。 有关详细信息,请参阅 Visual Basic 中的生命周期。
变量 的范围 是可以引用它的所有代码集,而无需限定其名称。 变量的范围由声明的位置确定。 位于给定区域中的代码可以使用该区域中定义的变量,而无需限定其名称。 有关详细信息,请参阅 Visual Basic 中的范围。
变量 的访问级别 是有权访问它的代码范围。 这由在语句中使用的访问修饰符(如公共或Dim)确定。 有关详细信息,请参阅 Visual Basic 中的 Access 级别。