在Visual Basic中,数组是一种固定或可变长度的结构,用于存储相同类型的元素。动态数组在初始化和调整大小时需要特别注意。
在VB6中,仅有静态和动态数组,具有固定或可变的大小。在VB.NET中,实现了完整的一维、二维和多维的任意类型数组,并且安全性得到了保证。
常见错误包括——
在使用数组之前始终初始化它,并小心地调整它的大小:
' 声明 Dim arr() As Integer ' 初始化 ReDim arr(4) ' 索引 0–4 arr(0) = 1 ' 通过保留值调整大小 ReDim Preserve arr(6)
关键特性:
如果声明了数组但没有进行初始化,会发生什么?
对于一维数组类型Dim arr() As Integer,变量存在,但数组本身未分配,访问arr.Length将引发异常。
可以使用ReDim Preserve同时调整二维数组的大小吗?
不可以,ReDim Preserve只允许调整最后一个维度,否则将引发运行时错误。
在通过ReDim Preserve调整大小时,数组元素会发生什么?
旧值将被保留,而新元素将获得默认值(例如,整数为0,引用类型为Nothing)。
负面案例
数组已声明,但未初始化(Dim arr() As Integer),访问arr.Length时会导致NullReferenceException。
优点:
缺点:
正面案例
数组始终通过ReDim显式初始化,调整大小仅在主循环外进行,对于频繁变动的列表使用List(Of Integer)。
优点:
缺点: