以下のコードで
For i = LBound(arr) To UBound(arr)
を使用して尋ねるポイントは何LBoundですか? 確かにそれは常に 0 です。
以下のコードで
For i = LBound(arr) To UBound(arr)
を使用して尋ねるポイントは何LBoundですか? 確かにそれは常に 0 です。
なぜ使用しないのFor Eachですか?LBoundそうすれば、 andが何であるかを気にする必要はありませんUBound。
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 までの 11 個のメンバーを割り当てます (VB6 の既定のオプション ベースを想定)。
多くの VB6 プログラマは、配列が 1 ベースであると想定しており、割り当てられarr(0)た . For i = 1 To UBound(arr)またはFor i = 0 To UBound(arr)を使用することで潜在的なバグの原因を取り除くことができarr(0)ます。
For eachポインターではなく、各配列要素のコピーを作成します。
これには 2 つの問題があります。
配列要素に値を割り当てようとすると、元の値に反映されません。このコードは変数 に値 47 を割り当てますがi、 の要素には影響しませんarr。
arr = 配列 (3,4,8)
arr の各 i について
私は= 47
次は
Response.Write arr(0) '- 47 ではなく 3 を返します
の配列要素のインデックスがわからずfor each、要素の順序が保証されていません (順序どおりに見えますが)。
LBound常に 0 になるとは限りません。
VBScript で 0 下限以外のものを持つ配列を作成することはできませんが、異なるLBound.
そうは言っても、そのようなことをした人に出会ったことはありません。
おそらくVB6から来ています。VB6のOption Baseステートメントを使用すると、配列の下限を次のように変更できるためです。
Option Base 1
また、VB6 では、次のように特定の配列の下限を変更できます。
Dim myArray(4 To 42) As String
私は常に For Each ループを使用してきました。