2012-01-09 15 views
14

Sto rivedendo una traduzione automatica del codice VB6 in C# e il convertitore tradotto someArray(3) in someArray[3]. Di conseguenza, secondo la vecchia documentazione del codice, dovrebbe scegliere il terzo elemento e non il quarto come avviene nella versione tradotta.Gli indici array sono basati su 0 in VB6?

Gli indici di array 0 sono basati su VB6? Oppure iniziano a 1?

+0

Si tratta di una * dichiarazione * array o dell'accesso a un elemento * * dell'array? –

+0

@Cody Accesso a un elemento dell'array. –

risposta

14

Sì - gli array sono (generalmente) 0 basano in VB6

Le eccezioni a questo sono quando è stato utilizzato l'esplicito Dim someArray(1 To 10) as Int sintassi, o quando Option Base 1 è dichiarato nella parte superiore del modulo di codice.

È Collections che non sono - quando si esegue il ciclo attraverso gli oggetti Collection Sono abbastanza sicuro che siano basati su 1.

+4

"A meno che non sia stata utilizzata la sintassi del tipo esplicito" * O * 'L'opzione Base 1' è stata dichiarata nella parte superiore del blocco di codice –

+0

@Matt: buon punto. –

+0

@Matt Questa istruzione riguarda solo il file corrente? –

6

La risposta breve è che i limiti inferiori dell'array sono ciò che voi dicono a.

Il predefinita è di base 0 (a meno che non prevalga Option Base 1), ma è possibile dichiarare limite inferiore a qualsiasi valore desiderato (Dim arr(-42 To 42) è valido quanto Dim(3)).

Inoltre, se un array viene restituito da qualche oggetto, il limite inferiore è qualsiasi oggetto a cui l'oggetto lo imposta. Ad esempio un riferimento a ExcelRange.Value restituirà un array basato su 1.

Problemi correlati