Condividi tramite


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.

Vedi anche