Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Rialloca lo spazio di archiviazione per una variabile di matrice.
Sintassi
ReDim [ Preserve ] name(boundlist) [ , name(boundlist) [, ... ] ]
Parti
| Termine | Definizione |
|---|---|
Preserve |
Facoltativo. Modificatore utilizzato per conservare i dati nella matrice esistente quando si modifica soltanto la grandezza dell'ultima dimensione. |
name |
Obbligatorio. Nome della variabile di matrice. Vedere Declared Element Names. |
boundlist |
Obbligatorio. Elenco di limiti relativi a ogni dimensione della matrice ridefinita. |
Osservazioni:
È possibile utilizzare l'istruzione ReDim per modificare una o più dimensioni di una matrice che è stata già dichiarata. Se si dispone di una matrice di grandi dimensioni e alcuni degli elementi di questa non sono più necessari, ReDim consente di liberare memoria riducendo le dimensioni della matrice. D’altra parte, se la matrice necessita di più elementi, ReDim è in grado di aggiungerli.
L'istruzione ReDim è destinata solo alle matrici. Non è valida per valori scalari (variabili che contengono un unico valore), raccolte o strutture. Tenere presente che se l'utente dichiara che una variabile è di tipo Array, l'istruzione ReDim non dispone di sufficienti informazioni sulla tipologia e non può creare la nuova matrice.
Si può usare ReDim solo a livello di routine. Pertanto, il contesto della dichiarazione relativo alla variabile deve essere una routine. Di conseguenza, non può essere un file di origine, uno spazio dei nomi, un'interfaccia, una classe, una struttura, un modulo o un blocco. Per altre informazioni, vedere Contesti delle dichiarazioni e livelli di accesso predefiniti.
Regole
Variabili multiple. È possibile ridimensionare numerose variabili di matrice nella stessa istruzione di dichiarazione e specificare i componenti
nameeboundlistper ogni variabile. Nel caso di più variabili, è possibile separarle mediante virgole.Limiti di matrice. Ogni voce in
boundlistè in grado di specificare i limiti inferiori e superiori di tale dimensione. Il limite inferiore è sempre pari a 0 (zero). Il limite superiore rappresenta il valore di indice più alto possibile per la dimensione, non la lunghezza della dimensione (vale a dire, il limite superiore più uno). L'indice di ogni dimensione può variare tra 0 e il relativo valore di limite superiore.Il numero di dimensioni in
boundlistdeve corrispondere al numero originale di dimensioni (livello) della matrice.Tipi di dati. L'istruzione
ReDimnon è in grado di modificare il tipo di dati di una variabile di matrice oppure i relativi elementi.Inizializzazione. L'istruzione
ReDimnon può fornire nuovi valori di inizializzazione per gli elementi della matrice.Classificazione. L'istruzione
ReDimnon può modificare la classificazione (numero di dimensioni) della matrice.Ridimensionamento con Preserve. Se si utilizza
Preserve, è possibile ridimensionare solo l'ultima dimensione della matrice. Per ogni dimensione, è necessario specificare il limite della matrice esistente.Ad esempio, se la matrice contiene solo una dimensione, è possibile ridimensionarla e mantenere tutto il contenuto della matrice, poiché si sta modificando l'ultima e unica dimensione. Tuttavia, se la matrice dispone di due o più dimensioni e si utilizza
Preserve, è possibile modificare i valori soltanto per l'ultima dimensione.Proprietà. È possibile utilizzare
ReDimsu una proprietà che contiene una matrice di valori.
Comportamento
Sostituzione della matrice.
ReDimrilascia la matrice esistente e crea una nuova matrice con la stessa classificazione. La nuova matrice sostituisce quella rilasciata nella variabile di matrice.Inizializzazione senza Preserve. Se non si specifica
Preserve,ReDiminizializza gli elementi della nuova matrice utilizzando il valore predefinito per i loro tipi di dati.Inizializzazione con Preserve. Se si specifica
Preserve, Visual Basic copia gli elementi dalla matrice esistente in quella nuova.
Esempio
Nell'esempio seguente viene aumentata la grandezza dell'ultima dimensione di una matrice dinamica senza perdere i dati presenti nella matrice; in seguito, viene ridotta la dimensione con perdita di dati parziali. Infine, viene ridotta la dimensione del relativo valore originale e vengono inizializzati di nuovo tutti gli elementi della matrice.
Class SampleCollection
' Define a local collection to store strings.
Private items As New List(Of String)
' Define a parameterized property (indexer) for the collection.
Default Public Property Item(ByVal index As Integer) As String
Get
' Return the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
Return items(index)
Else
Return Nothing
End If
End Get
Set(ByVal value As String)
' Set the item at the specified index.
If index >= 0 AndAlso index < items.Count Then
items(index) = value
ElseIf index = items.Count Then
' Allow adding new items at the end.
items.Add(value)
End If
End Set
End Property
' Add a Count property for convenience.
Public ReadOnly Property Count As Integer
Get
Return items.Count
End Get
End Property
' Add method to add items.
Public Sub Add(ByVal item As String)
items.Add(item)
End Sub
End Class
L'istruzione Dim crea una nuova matrice con tre dimensioni. Ogni dimensione viene dichiarata con un limite pari a 10. In questo modo l'indice della matrice per ogni dimensione può essere compreso tra 0 e 10. Nella seguente discussione, si fa riferimento alle tre dimensioni come livello, riga e colonna.
La prima ReDim crea una nuova matrice che sostituisce quella esistente nella intArray di variabile.
ReDim copia tutti gli elementi dalla matrice esistente in quella nuova. Inoltre, consente di aggiungere altre 10 colonne alla fine di ogni riga di tutti i livelli e consente di inizializzare gli elementi in queste nuove colonne su 0 (valore predefinito) di Integer, ovvero il tipo di elemento della matrice.
La seconda ReDim crea una nuova matrice e copia tutti gli elementi adeguati. Tuttavia, cinque colonne vengono perse alla fine di ogni riga relativa a ogni livello. Ciò non rappresenta un problema se l'utente non ha più la necessità di utilizzare tali colonne. La riduzione delle dimensioni di una grande matrice può liberare memoria che non è più necessaria.
La terza ReDim crea una nuova matrice e rimuove altre cinque colonne dalla fine di ogni riga relativa a ogni livello. Questa volta non copia gli elementi esistenti. Questa istruzione consente di ripristinare le dimensioni originali della matrice. Dal momento che l'istruzione non include il modificatore Preserve, imposta i valori predefiniti originali di tutti gli elementi della matrice.
Per altri esempi, vedere Matrici.