多维容器类型。
概观
Arrays 是
变量的特殊类型,作为多个值的容器,或
elements .数组可以存储任何类型的元素,并且其所有元素共享相同的类型。例如,数组可以存储
Integer元素,但不能同时存储。这些元素被访问 - 通过
Integer值表示数组中的
position 来读取或写入。数组有长度,或
sizes ,它们等于在任何给定时间存储的元素的数量。
Fixed-length 数组在其整个生命周期内具有不变的大小,而
variable-length 数组的大小可以动态更改。
元素和位置
数组存储的值是其元素。数组的每个元素都有一个对应的位置,它是一个
Integer值,从数组的
lower bound 到其
upper bound (包括端点)。这些位置用于使用
操作符 ()访问数组中的各个元素,该位置会返回对该位置的元素的引用。数组中的有效位置大于或等于其下限,小于或等于其上限。
' Create an array of 3 elements all having the value zero (0.0f).
Dim array(1 To 3) As Single
' Assign a value to the first element.
array(1) = 1.2
' Output the values of all the elements ("1.2 0 0").
For position As Integer = 1 To 3
Print array(position)
Next
尺寸和边界
数组的大小等于在任何给定时间存储的元素的数量。数组的大小可以为零(0),这意味着它不存在任何值 - 这是
empty .如果数组的大小大于零,则存储了许多元素。数组的大小等于其上限和下限之间的差异,或
UBound(array ) - LBound(array ) + 1.
下限和上限不仅可以确定数组的大小,还可以确定各个元素的有效位置。例如,具有零(0)和四(4)的下限和上限的数组存储五(5)个元素,第一个元素在位置0,最后一个在位置5。这些边界可以在声明数组时被指定,或者对于某些数组,通过调整数组的大小可以改变。可以使用
LBound和
UBound分别检索数组的下限和上限。
创建或调整数组大小时,如果未指定下限,则默认为零(0)。
' Declares and initializes an array of four integer elements.
Dim array(3) As Integer = { 10, 20, 30, 40 }
' Outputs all of the element values (" 10 20 30 40").
For position As Integer = LBound(array) To UBound(array)
Print array(position) ;
Next
固定长度和可变长度
有两种基本类型的阵列:
fixed-length 和
variable-length .两者之间的主要区别在于,固定长度数组的界限永远不会改变,也就是说,它们总是将相同数量的元素存储在同一位置。可变长度的数组边界可以改变,影响元素的数量和/或元素的位置。
由于固定长度的数组永远不会改变大小,编译器会根据数组的
存储类选择为静态存储器或程序堆栈中的数组元素的存储空间 - 或者
allocate .这可以是一个优点,因为创建这些类型的阵列的成本不包括任何不利的运行时惩罚。使用
ExternStatic和
Dim声明固定长度的数组。必须至少指定一个上限,所有边界都必须是编译时常数值,例如数字文字,
Const变量或
Enum枚举器。
可变长度的数组可以改变大小,因此编译器选择在运行时在空闲存储器中为数组元素赋值内存。这里的优点当然是能够动态地调整数组的大小,但是,运行时性能在创建,调整大小或销毁时可能会有所不同。可变长度数组使用
Extern,
Static,
Dim和
ReDim声明。当使用
Extern,
Static或
Dim时,下限和上限可以保留未指定 - 导致一个空数组 - 或者必须有一个变量值,例如
Integer变量或
Function结果。可以使用
ReDim来调整现有的可变长度数组的大小,给出不同的下限和/或上限。
' Creates a fixed-length array that holds 5 single elements.
Const totalSingles = 5
Dim flarray(1 To totalSingles) As Single
' Creates an empty variable-length array that holds integer values.
Dim vlarray() As Integer
' Resizes the array to 10 elements.
ReDim vlarray(1 To 10) As Integer
多维数组
到目前为止讨论的阵列是一维的,也就是说,元素通过单个位置访问。一维数组可以被认为是简单的一行元素。数组也可以有多个维度;使用两个或多个位置访问阵列的单个元素。二维数组使用两个位置 - 一个行和一个列位置来引用单个元素,如网格或表格。三维阵列使用三个位置 - 一列,也可能是深度位置 - 来指代单个元素,如立方体。四维阵列可以被认为是一个或多个三维阵列,等等。多维数组的声明就像一维数组,只不过指定了多个下限和上限范围。
' Take Care while initializing multi-dimensional array
Dim As Integer multidim(1 To 2,1 To 5) = {{0,0,0,0,0},{0,0,0,0,0}}
参考