假设我在VBScript中创建一个动态数组
Dim myArray()
稍后我如何检查这个数组从未被标注过尺寸?
Ubound(myArray) 'sub script out of range
Lbound(myArray) 'sub script out of range
IsEmpty(myArray) 'returns false
答案 0 :(得分:5)
我认为没有任何内置功能,但您可以创建自己的功能:
Function IsInitialized(a)
Err.Clear
On Error Resume Next
UBound(a)
If (Err.Number = 0) Then
IsInitialized = True
End If
End Function
然后您可以将其称为:
Dim myArray()
If Not IsInitialized(myarray) Then
WScript.Echo "Uninitialized"
End If
但是,解决它的一种方法可能是不声明空数组,而是声明一个变量并稍后将其设置为数组,因此请将上面的代码更改为:
Dim myArray
myArray = Array()
If Not IsInitialized(myarray) Then
WScript.Echo "Uninitialized"
End If
答案 1 :(得分:0)
我更喜欢Not
数组,然后将结果与-1
进行比较。这样做是有效的,并且没有故意造成错误。
Dim myArray()
...
If (Not myArray) = -1 Then
ReDim myArray(0)
Else
ReDim Preserve(0 To UBound(myArray)+1)
End If
答案 2 :(得分:0)
我一直在使用这样的东西:
Dim arr
arr = null
sub addElement (byref arr, element)
if isNull (arr) then
redim arr(0)
else
redim preserve arr (uBound(arr) + 1)
end if
arr(uBound(arr)) = element
end sub
答案 3 :(得分:-1)
在寻找同一问题的答案时遇到这个问题,我将一个变量初始化为0并仅在我添加到该区域时增加它,然后只检查变量值...
昏暗的myarray() NUM = -1 如果addtoarray然后 NUM = NUM + 1 redim preserve myarray(num) 万一 如果num> -1则 做一点事 结束如果