在下面的代码中
For i = LBound(arr) To UBound(arr)
使用LBound
询问有什么意义?当然,这总是0。
答案 0 :(得分:50)
为什么不使用For Each
?这样,您无需关心LBound
和UBound
是什么。
Dim x, y, z
x = Array(1, 2, 3)
For Each y In x
z = DoSomethingWith(y)
Next
答案 1 :(得分:17)
不使用For i = LBound(arr) To UBound(arr)
dim arr(10)
分配数组的11个成员,0到10(假设VB6默认为Option Base)。
许多VB6程序员都认为该数组是基于一的,并且从不使用分配的arr(0)
。我们可以使用For i = 1 To UBound(arr)
或For i = 0 To UBound(arr)
删除潜在的错误来源,因为很明显是否正在使用arr(0)
。
For each
复制每个数组元素,而不是指针。
这有两个问题。
当我们尝试为数组元素赋值时,它不会反映原始数据。此代码为变量i
指定了值47,但不会影响arr
的元素。
arr = Array(3,4,8) for each i in arr i = 47 next i Response.Write arr(0) '- returns 3, not 47
我们不知道for each
中数组元素的索引,我们无法保证元素序列(尽管它看起来是有序的。)
答案 2 :(得分:3)
LBound
可能并不总是为0.
虽然无法在VBScript中创建除0下限之外的任何数组,但仍可以从COM组件中检索可能指定了不同LBound
的变体数组。
那就是说我从来没有遇到过那样做过的人。
答案 3 :(得分:2)
可能它来自VB6。因为在VB6中使用Option Base语句,您可以改变数组的下限:
Option Base 1
同样在VB6中,您可以改变特定数组的下限:
Dim myArray(4 To 42) As String
答案 4 :(得分:1)
我一直都在使用For Each ......
答案 5 :(得分:0)
这是我的方法:
dim arrFormaA(15)
arrFormaA( 0 ) = "formaA_01.txt"
arrFormaA( 1 ) = "formaA_02.txt"
arrFormaA( 2 ) = "formaA_03.txt"
arrFormaA( 3 ) = "formaA_04.txt"
arrFormaA( 4 ) = "formaA_05.txt"
arrFormaA( 5 ) = "formaA_06.txt"
arrFormaA( 6 ) = "formaA_07.txt"
arrFormaA( 7 ) = "formaA_08.txt"
arrFormaA( 8 ) = "formaA_09.txt"
arrFormaA( 9 ) = "formaA_10.txt"
arrFormaA( 10 ) = "formaA_11.txt"
arrFormaA( 11 ) = "formaA_12.txt"
arrFormaA( 12 ) = "formaA_13.txt"
arrFormaA( 13 ) = "formaA_14.txt"
arrFormaA( 14 ) = "formaA_15.txt"
Wscript.echo(UBound(arrFormaA))
''displays "15"
For i = 0 To UBound(arrFormaA)-1
Wscript.echo(arrFormaA(i))
Next
希望有帮助。