Risoluzione dei problemi relativi alle matrici (Visual Basic)
Questa pagina elenca alcuni problemi comuni che possono verificarsi durante l'uso di matrici.
Errori di compilazione che dichiarano e inizializzano una matrice
Gli errori di compilazione possono verificarsi incomprensioni delle regole per dichiarare, creare e inizializzare le matrici. Le cause più comuni degli errori sono le seguenti:
Specificare una clausola New Operator dopo aver specificato le lunghezze delle dimensioni nella dichiarazione della variabile di matrice. Le righe di codice seguenti mostrano dichiarazioni non valide di questo tipo.
Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()
Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)
Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()
Specificare le lunghezze delle dimensioni per più della matrice di primo livello di una matrice frastagliata. La riga di codice seguente mostra una dichiarazione non valida di questo tipo.
Dim INVALIDjaggedByteArray(1)(1) As Byte
Omettendo la parola chiave quando si specificano i valori dell'elemento
New
. La riga di codice seguente mostra una dichiarazione non valida di questo tipo.Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}
Specifica di una
New
clausola senza parentesi graffe ({}
). Le righe di codice seguenti mostrano dichiarazioni non valide di questo tipo.Dim INVALIDsingleDimByteArray() As Byte = New Byte()
Dim INVALIDsingleDimByteArray() As Byte = New Byte(2)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(,)
Dim INVALIDtwoDimShortArray(,) As Short = New Short(1, 1)
Accesso a una matrice fuori limiti
Il processo di inizializzazione di una matrice assegna un limite superiore e un limite inferiore a ogni dimensione. Ogni accesso a un elemento della matrice deve specificare un indice o un sottoscritto valido per ogni dimensione. Se un indice è inferiore al limite inferiore o superiore al limite superiore, viene restituito un'eccezione IndexOutOfRangeException . Il compilatore non riesce a rilevare tale errore, quindi si verifica un errore in fase di esecuzione.
Determinazione dei limiti
Se un altro componente passa una matrice al codice, ad esempio come argomento di routine, non si conosce la dimensione di tale matrice o le lunghezze delle dimensioni. È sempre necessario determinare il limite superiore per ogni dimensione di una matrice prima di tentare di accedere a tutti gli elementi. Se la matrice è stata creata da alcuni mezzi diversi da una clausola Visual Basic New
, il limite inferiore potrebbe essere diverso da 0 ed è sicuro determinare anche tale limite inferiore.
Specifica della dimensione
Quando si determinano i limiti di una matrice multidimensionale, è consigliabile specificare la dimensione. I dimension
parametri dei metodi e GetUpperBound sono basati su 0, mentre i Rank
parametri di GetLowerBound Visual Basic LBound e UBound funzioni sono basati su 1.