Vra

In die kode hieronder

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

Wat is die punt in te vra met behulp van LBound? Dit is sekerlik altyd 0.

Was dit nuttig?

Oplossing

Hoekom nie For Each gebruik? Die manier wat jy hoef nie te bekommer wat die LBound en UBound is.

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

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

Ander wenke

Daar is 'n goeie rede om NIE For i = LBound(arr) To UBound(arr)

dim arr(10) ken elf lede van die skikking, 0 tot 10 (met die aanvaarding van die VB6 verstek opsie Base).

Baie VB6 programmeerders aanvaar die skikking is-een-gebaseerde, en nooit gebruik die toegekende arr(0). Ons kan 'n potensiële bron van foute te verwyder deur gebruik te maak van For i = 1 To UBound(arr) of For i = 0 To UBound(arr), want dan is dit duidelik of arr(0) gebruik word.

For each maak 'n afskrif van elke reeks element, eerder as om 'n wyser.

Dit het twee probleme.

  1. Wanneer ons probeer om 'n waarde aan 'n verskeidenheid element toewys, beteken dit nie na te dink oor die oorspronklike. Hierdie kode ken 'n waarde van 47 tot die veranderlike i, maar het geen invloed op die elemente van arr.

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

  2. Ons weet nie die indeks van 'n skikking element in 'n for each, en ons is nie gewaarborg nie die volgorde van elemente (alhoewel dit blyk te wees ten einde.)

LBound kan nie altyd 0.

Hoewel dit nie moontlik is om 'n skikking wat enigiets anders as 'n 0 Laer gebind in VBScript het te skep, is dit steeds moontlik om 'n verskeidenheid van variasies van 'n COM komponent wat 'n ander LBound dalk gespesifiseerde haal.

Dit sê ek het nog nooit oor een wat so iets gedoen het kom.

Waarskynlik dit kom uit VB6. Want met Opsie Base verklaring in VB6, jy kan verander die ondergrens van skikkings soos volg:

Option Base 1

Ook in VB6, kan jy dit verander die ondergrens van 'n spesifieke reeks soos volg:

Dim myArray(4 To 42) As String

Ek het nog altyd vir elke ...

Gelisensieer onder: CC-BY-SA met toeskrywing
Nie verbonde aan StackOverflow
scroll top