在代码下面

For i = LBound(arr) To UBound(arr)

要点是什么,在要求使用 LBound?当然,总是0.

有帮助吗?

解决方案

为什么不用 For Each?这样,你不需要照顾什么 LBoundUBound 是。

Dim x, y, z
x = Array(1, 2, 3)

For Each y In x
    z = DoSomethingWith(y)
Next

其他提示

有一个很好的理由 不用 For i = LBound(arr) To UBound(arr)

dim arr(10) 分配的十一名成员的阵列,0到10(假定的维生素b6默认选择基准)。

许多维生素b6的程序员承担阵列是一个基于和从来没有使用的分配 arr(0).我们可以删除一个潜在来源的错误使用 For i = 1 To UBound(arr)For i = 0 To UBound(arr), ,因为那显然是否 arr(0) 正在使用。

For each 使得副本的每一个元件阵列,而不是指针。

这两个问题。

  1. 当我们试图将一个值分配给一个元件阵列,不反映在原来的。这个代码分配一个值的47变 i, 但不影响要素 arr.

    arr = Array(3,4,8)
    for each i in arr
         i = 47
    next i
    Response.Write arr(0) '- returns 3, not 47

  2. 我们不知道的指标阵列中的元素 for each, 我们不能保证序列元素(虽然这似乎是在单。)

LBound 可能并不总是0.

虽然这是不可能创建一个数组,有什么比一个0下限在VBScript,它仍然是可以检索一系列变从一个COM component其可能已经指定了不同的 LBound.

这就是说我从来没遇到那个已经做这样的事情。

可能它来自维生素b6.因为有了 选择基 声明中的维生素b6中,你可以改变的下限数组是这样的:

Option Base 1

还有维生素b6在,你可以改变的下限的具体阵列是这样的:

Dim myArray(4 To 42) As String

我总是用于为每个...

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top