Klasik Asp VBScript bir dizi yineleme için en iyi yolu nedir?

oy
31

Aşağıdaki kodu

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

Kullanarak soran nokta nedir LBound? Şüphesiz bu her zaman 0'dır.

Oluştur 05/08/2008 saat 15:07
kaynak kullanıcı
Diğer dillerde...                            


5 cevaplar

oy
45

Neden kullanmaz For Each? İhtiyacınız olmayan Böylece neyin bakımı LBoundve UBoundvardır.

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

For Each y In x
    z = DoSomethingWith(y)
Next
Cevap 05/08/2008 saat 15:36
kaynak kullanıcı

oy
16

Için iyi bir sebep yoktur KULLANMAYINFor i = LBound(arr) To UBound(arr)

dim arr(10) dizinin on üye 10, 0 ile (VB6 varsayılan Seçenek Base varsayılarak) ayırır.

Birçok VB6 programcılar dizi tek merkezli olduğunu varsayalım ve tahsis hiç kullanmıyorum arr(0). Biz kullanarak hataların potansiyel kaynağını kaldırabilir For i = 1 To UBound(arr)veya For i = 0 To UBound(arr)o olsun açıktır, çünkü arr(0)kullanılıyor.

For each her bir dizi elemanının bir kopyasını yerine bir işaretçi yapar.

Bu iki sorun vardır.

  1. Biz dizi öğesine bir değer atamak çalıştığınızda, orijinalin üzerine yansıtmamaktadır. Bu kod değişkenine 47 bir değer atar iancak elemanlarını etkilemez arr.

    dizi = Dizi (3,4,8)
    her i arr
         i 47 =
    bir sonraki i
    Response.Write arr (0) '- 47, 3 değil döner

  2. Biz de bir dizi öğesinin dizinini bilmiyorum for eachve biz öğelerinin sırası garanti edilmez (sırada olması görünse de.)

Cevap 23/09/2008 saat 16:24
kaynak kullanıcı

oy
3

LBound her zaman 0 olmayabilir.

VBScript ciltlenmiş bir 0 Alt dışında başka bir şey olan bir diziyi oluşturmak mümkün değil iken, farklı bir belirtmiş olabilirsiniz bir COM bileşeninden varyantları bir dizi almak için hala mümkün LBound.

Yani böyle bir şey yapmış bir rastlamak hiç kaydetti.

Cevap 24/09/2008 saat 19:24
kaynak kullanıcı

oy
1

Hep Her için kullandım ...

Cevap 12/08/2008 saat 15:34
kaynak kullanıcı

oy
1

Muhtemelen VB6 geliyor. Ile Çünkü Seçenek Bankası VB6 açıklamada, böyle Dizilerin alt sınır değiştirebilir:

Option Base 1

Ayrıca VB6, böyle belirli bir dizinin alt sınır değiştirebilir:

Dim myArray(4 To 42) As String
Cevap 05/08/2008 saat 15:24
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more