Condividi tramite


Istruzione ReDim (Visual Basic)

Rialloca lo spazio di archiviazione per una variabile di matrice.

ReDim [ Preserve ] name(boundlist) [ ,  name(boundlist) [, ... ] ]

Parti

Termine

Definizione

Preserve

Opzionale. Modificatore utilizzato per mantenere i dati nella matrice esistente quando si modificano le dimensioni esclusivamente dell'ultima dimensione.

name

Necessario. Nome della variabile della matrice. Per informazioni, vedere Nomi di elementi dichiarati (Visual Basic).

boundlist

Necessario. Elenco dei limiti di ogni dimensione della matrice ridefinita.

Note

È possibile utilizzare l'istruzione ReDim per modificare la dimensione di uno o più dimensioni di una matrice che è già stata dichiarata. Se si dispone di una matrice di grandi dimensioni e non si necessita più di alcuni dei suoi elementi, ReDim può liberare un po' di memoria riducendo le dimensioni della matrice. Di altra parte, se la matrice richiede più elementi, ReDim possibile aggiungerli.

L'istruzione ReDim è progettata solo per le matrici, mentre Non è valida su scalari (variabili che contengono solo un valore singolo, sulle raccolte, o strutture. Si noti che se si dichiara una variabile di tipo Array, l'istruzione di ReDim non dispone di informazioni sul tipo sufficienti per creare la nuova matrice.

La parola chiave ReDim può essere utilizzata solo a livello di routine Di conseguenza, il contesto della dichiarazione della variabile deve essere una routine, non può essere un file di origine, uno spazio dei nomi, un'interfaccia, una classe, una struttura, un modulo, o un blocco. Per ulteriori informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti (Visual Basic).

Regole

  • Più variabili. È possibile ridimensionare più variabili di matrice nella stessa istruzione di dichiarazione e specificare le parti di boundlist e di name per ogni variabile. Le variabili sono separate da una virgola.

  • Limiti di matrici. Ogni voce di boundlist può specificare il limite inferiore e quello superiore della dimensione. Il limite inferiore è sempre 0 (zero). Il limite superiore è il valore di indice più elevato possibile di tale dimensione, non la lunghezza delle dimensioni (il limite superiore uno. Indice per ogni dimensione può variare tra 0 e il valore soglia superiore.

    Il numero di dimensioni boundlist deve corrispondere al numero originale di dimensioni (numero di dimensioni della matrice.

  • Tipi di dati. L'istruzione di ReDim non può modificare il tipo di dati di una variabile di matrice o dei relativi elementi.

  • Inizializzazione. L'istruzione ReDim non è in grado di fornire nuovi valori di inizializzazione per gli elementi della matrice.

  • Classifica. L'istruzione ReDim non è in grado di modificare il rango, ovvero il numero di dimensioni, della matrice.

  • Ridimensionamento con Preserve. Se si utilizza Preserve, è possibile ridimensionare solo l'ultima dimensione della matrice. Per ogni altra dimensioni, è necessario specificare il limite della matrice esistente.

    Se ad esempio la matrice ha un'unica dimensione, è possibile ridimensionare quest'ultima e mantenere ancora tutto il contenuto della matrice, in quanto si sta modificando l'ultima e unica dimensione. Nelle matrici con due o più dimensioni, invece, è consentito ridimensionare solo l'ultima dimensione quando si utilizza la parola chiave Preserve.

  • Proprietà. È possibile utilizzare ReDim su una proprietà che contiene una matrice di valori.

Comportamento

  • Sostituzione della matrice. ReDim consente di rilasciare la matrice esistente e di crearne una nuova con la stessa classifica. La nuova matrice sostituisce quella rilasciata nella variabile di matrice.

  • Inizializzazione senza Preserve. Se non si specifica Preserve, ReDim inizializza gli elementi della matrice utilizzando il valore predefinito per il tipo di dati.

  • Inizializzazione con Preserve. Se si specifica Preserve, Visual Basic copia gli elementi della matrice esistente nella nuova matrice.

Esempio

Nell'esempio seguente la dimensione dell'ultima dimensione di una matrice dinamica aumenta senza perdere i dati esistenti nella matrice, quindi diminuisce con una perdita parziale dei dati. Infine la dimensione diminuirà tornando al suo valore originale e tutti gli elementi della matrice verranno reinizializzati.

Dim intArray(10, 10, 10) As Integer 
ReDim Preserve intArray(10, 10, 20)
ReDim Preserve intArray(10, 10, 15)
ReDim intArray(10, 10, 10)

L'istruzione di Dim crea una nuova matrice con tre dimensioni. Ogni dimensione è dichiarata con un limite di 10, pertanto indice di matrice per ogni dimensione può variare da 0 a 10. Nella discussione seguente, le tre dimensioni sono denominati il livello, la riga e la colonna.

La prima istruzione ReDim crea una nuova matrice che sostituisce quella esistente nella variabile intArray. ReDim copia tutti gli elementi dalla matrice esistente a quella nuova. Aggiunge 10 nuove colonne alla fine di ogni riga in ogni livello e inizializza gli elementi nelle nuove colonne a 0 (il valore predefinito di Integer, che è il tipo di elemento della matrice).

Come ReDim crea un'altra nuova matrice e copia tutti gli elementi che vengono estesi. Verranno tuttavia perdute 5 colonne alla fine di ogni riga in ogni livello. Se le colonne non vengono più utilizzate, non si verificherà alcun problema. Riducendo matrici di grandi dimensioni si libera memoria altrimenti inutilizzata.

Terzo ReDim crea un'altra nuova matrice e rimuove le altre cinque colonne dalla fine di ogni riga in ogni livello. Questa volta non copia alcun elemento esistente. Questa istruzione ripristina la matrice alla dimensione originale. Poiché l'istruzione non include il modificatore di Preserve, impostare tutti gli elementi della matrice sui valori predefiniti originali.

Per ulteriori esempi, vedere Matrici in Visual Basic.

Vedere anche

Riferimenti

Istruzione Const (Visual Basic)

Istruzione Dim (Visual Basic)

Istruzione Erase (Visual Basic)

Nothing (Visual Basic)

IndexOutOfRangeException

Altre risorse

Matrici in Visual Basic