Domanda

Nel codice riportato di seguito

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

Qual è il punto nel chiedere utilizzando LBound?Certo che è sempre 0.

È stato utile?

Soluzione

Perché non utilizzare For Each?In modo che non importa ciò che il LBound e UBound sono.

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

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

Altri suggerimenti

C'è un buon motivo per NON UTILIZZARE For i = LBound(arr) To UBound(arr)

dim arr(10) alloca undici membri dell'array da 0 a 10 (supponendo che il VB6 Opzione predefinita di Base).

Molti programmatori VB6 assumere la matrice è uno, e non usare mai assegnate arr(0).Siamo in grado di rimuovere una potenziale fonte di bug utilizzando For i = 1 To UBound(arr) o For i = 0 To UBound(arr), perché allora è chiaro se arr(0) viene utilizzato.

For each crea una copia di ogni elemento di un array, piuttosto che un puntatore.

Questo ha due problemi.

  1. Quando si tenta di assegnare un valore ad un elemento di un array, non riflette su originale.Questo codice viene assegnato un valore di 47 alla variabile i, ma non incidere sugli elementi dell' arr.

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

  2. Non sappiamo l'indice di un elemento di un array in un for each, e non è garantita la sequenza di elementi (anche se sembra essere in ordine.)

LBound non può essere sempre a 0.

Mentre non è possibile creare un array che ha qualcosa di diverso da 0 (Lower bound in VBScript, è ancora possibile recuperare una serie di varianti da un componente COM che può aver indicato una diversa LBound.

Detto questo non ho mai trovato uno che ha fatto una cosa del genere.

Probabilmente si tratta di VB6.Perché con Opzione Base istruzione in VB6, è possibile modificare il limite inferiore di matrici come questo:

Option Base 1

Anche in VB6, è possibile modificare il limite inferiore di una specifica matrice:

Dim myArray(4 To 42) As String

Ho sempre usato Per Ogni...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top