为什么我无法根据变量设置数组的大小?最好的方法是什么?
Dim NumberOfZombies as integer
NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) as New Zombie
答案 0 :(得分:41)
如果在运行时之前不知道它将包含的值的数量,则可以使用动态数组:
Dim Zombies() As Integer
ReDim Zombies(NumberOfZombies)
如果您正在创建一个过程本地的数组,那么您可以使用一个语句执行所有操作:
ReDim Zombies(NumberOfZombies) As Integer
固定大小的数组要求在编译时知道包含的元素数。这就是为什么你不能使用变量来设置数组的大小 - 按定义,变量的值是可变的,只在运行时才知道。
如果您知道变量的值不会改变,则可以使用常量:
Const NumberOfZombies = 2000
但是没有办法在常量和变量之间进行转换。它们的含义截然不同。
答案 1 :(得分:3)
您必须使用ReDim语句来动态调整数组大小。
Public Sub Test()
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As New Zombie
ReDim Zombies(NumberOfZombies)
End Sub
当你已经知道阵列的大小时,这看起来很奇怪,但你去了!
答案 2 :(得分:2)
您还可以查看使用Collection Object。这通常比自定义对象的数组更好,因为它动态调整大小并具有以下方法:
另外,它通常更容易在循环中循环,因为您可以非常轻松地使用for ...每个结构。
答案 3 :(得分:1)
您需要使用常量。
CONST NumberOfZombies = 20000
Dim Zombies(NumberOfZombies) As Zombies
或者如果你想使用变量,你必须这样做:
Dim NumberOfZombies As Integer
NumberOfZombies = 20000
Dim Zombies() As Zombies
ReDim Zombies(NumberOfZombies)