VBS 数组以最简单的方式

VBS Array in its most simple way

我无法在 VBS 中创建未定义的数组。

只要需要就可以了。我不想用 Dim arrnode(10) 声明一些限制,例如 10 左右。我要无限量的。

我试过了:

Dim arrnode    
arrnode(1) = "a"     
arrnode(2) = "b"     
arrnode(3) = "c"     
arrnode(4) = "d" 

还有很多变体,例如:

Dim arrnode()   
Dim arrnode() As Variant
Dim arrnode() As Variant()

Etc.etc。 None 的作品。 仅错误。

请举一个有效的例子。 我不是在寻找解释,因为我无法理解我在网上一遍又一遍地找到的 "variant" 解释。 我只是迫切需要一个非常简单的数组。

在 VBScript 中有多种创建数组的方法

具有定义大小的数组

Dim arrTest1(3)
arrTest1(0) = "1"
arrTest1(1) = "2"
arrTest1(2) = "3"
arrTest1(3) = "4"

没有定义大小的数组

Dim arrTest2()
ReDim arrTest2(3)
arrTest2(0) = "1"
arrTest2(1) = "2"
arrTest2(2) = "3"
arrTest2(3) = "4"

使用Array函数创建数组

Dim arrTest3
arrTest3 = Array ("1", "2", "3", "4")

在 VBScript 中,数组从零开始,您不能在声明数组时定义变量类型(例如 as Variant

如果您不确定数组的大小,可以使用第二个选项。您以后可以随时 ReDim 它来更改其大小。如果你想保护数组数据,请不要忘记使用 Preserve 关键字 ReDiming it

要创建具有 10 个槽的静态(不可调整大小)数组,请使用

Dim arr(9)

要创建具有 10 个插槽的动态(可调整大小)数组,请使用

ReDim arr(9)

在每种情况下,参数都是数组的上边界。由于 VBScript 数组是从零开始的(索引从 0 开始),即元素数减一。

如果您想在事先不知道所需大小的情况下追加到数组,请将其创建为空动态数组:

ReDim arr(-1)

要附加到该数组,您需要先增加其大小:

ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "a"

ReDim Preserve arr(UBound(arr)+1)
arr(UBound(arr)) = "b"

...

您可以将其包装在一个过程中以稍微简化处理:

Sub AppendToArray(ByRef a, v)
    ReDim Preserve a(UBound(a)+1)
    a(UBound(a)) = v
End Sub

AppendToArray arr, "a"
AppendToArray arr, "b"
...

但是请注意,在保留其内容的同时调整数组大小是一项缓慢的操作,因为 VBScript 创建了一个增加大小的新数组,移动现有数组的内容,然后用新数组替换现有数组.

否则 VBScript 不支持动态附加到数组。作为替代方案,您可以使用 System.Collections.ArrayList class,它支持动态调整大小:

Set arr = CreateObject("System.Collections.ArrayList")

arr.Add "a"
arr.Add "b"
...