Partager via


ReDim, instruction (Visual Basic)

Réalloue l'espace de stockage d'une variable tableau.

Syntaxe

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

Éléments

Terme Définition
Preserve Optionnel. Modificateur utilisé pour conserver les données du tableau existant quand vous modifiez la taille de la dernière dimension uniquement.
name Obligatoire. Nom de la variable de tableau. Consultez Declared Element Names.
boundlist Obligatoire. Liste des limites de chaque dimension du tableau redéfini.

Notes

Vous pouvez utiliser l'instruction ReDim pour modifier la taille d'une ou plusieurs dimensions d'un tableau qui a déjà été déclaré. Si vous possédez un grand tableau et que vous n'avez plus besoin de certains de ses éléments, ReDim peut libérer de la mémoire en réduisant la taille du tableau. En revanche, si votre tableau a besoin d'éléments supplémentaires, ReDim peut les ajouter.

L'instruction ReDim est destinée uniquement aux tableaux. Il n'est pas valide sur les scalaires (variables contenant une seule valeur), les collections ou les structures. Notez que si vous déclarez une variable de type Array, l'instruction ReDim ne dispose pas d'informations de type suffisantes pour créer le tableau.

Vous pouvez utiliser ReDim uniquement au niveau de la procédure. Par conséquent, le contexte de déclaration pour la variable doit être une procédure ; il ne peut pas être un fichier source, un espace de noms, une interface, une classe, une structure, un module ou un bloc. Pour plus d’informations, consultez Contextes de déclaration et niveaux d’accès par défaut.

Règles

  • Variables multiples. Vous pouvez redimensionner plusieurs variables de tableau dans la même instruction de déclaration et spécifier les parties name et boundlist pour chaque variable. Les variables multiples sont séparées par des virgules.

  • Limites d'index de tableau. Chaque entrée dans boundlist peut spécifier les limites inférieures et supérieures de cette dimension. La limite inférieure est toujours 0 (zéro). La limite supérieure est la valeur d'index la plus élevée possible pour cette dimension, pas la longueur de la dimension (qui est la limite supérieure plus un). L'index pour chaque dimension varie de 0 à sa valeur liée supérieure.

    Le nombre de dimensions dans boundlist doit correspondre au nombre de dimensions (rang) d'origine du tableau.

  • Types de données. L'instruction ReDim ne peut pas modifier le type de données d'une variable tableau ou de ses éléments.

  • Initialisation. L'instruction ReDim ne peut pas fournir de nouvelles valeurs d'initialisation pour les éléments du tableau.

  • Rang. L'instruction ReDim ne peut pas modifier le rang (nombre de dimensions) du tableau.

  • Redimensionnement avec Preserve. Si vous utilisez Preserve, vous pouvez uniquement redimensionner la dernière dimension du tableau. Pour chaque autre dimension, vous devez spécifier la limite du tableau existant.

    Par exemple, si votre tableau ne comporte qu'une seule dimension, vous pouvez la redimensionner tout en conservant le contenu du tableau, car vous modifiez la dernière et seule dimension. Toutefois, si votre tableau comporte deux dimensions ou plus, vous pouvez modifier la taille de la dernière dimension seulement si vous utilisez Preserve.

  • Propriétés. Vous pouvez utiliser ReDim sur une propriété contenant un tableau de valeurs.

Comportement

  • Remplacement du tableau. ReDim libère le tableau existant et crée un tableau avec le même rang. Le nouveau tableau remplace le tableau libéré dans la variable tableau.

  • Initialisation sans Preserve. Si vous ne spécifiez pas Preserve, ReDim initialise les éléments du nouveau tableau à l'aide de la valeur par défaut de leur type de données.

  • Initialisation avec Preserve. Si vous spécifiezPreserve, Visual Basic copie les éléments du tableau existant dans le nouveau tableau.

Exemple

L'exemple suivant augmente la taille de la dernière dimension d'un tableau dynamique sans perte de données existantes dans le tableau, puis réduit la taille avec une perte de données partielle. Enfin, il réduit la taille à sa valeur d'origine et réinitialise tous les éléments du tableau.

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'instruction Dim crée un tableau à trois dimensions. Étant donné que chaque dimension est déclarée avec une limite de 10, l'index de tableau pour chaque dimension peut aller de 0 à 10. Dans la discussion suivante, les trois dimensions sont appelées « couche », « ligne » et « colonne ».

La première instruction ReDim crée un tableau qui remplace le tableau existant dans la variable intArray. ReDim copie tous les éléments du tableau existant dans le nouveau tableau. Elle ajoute également 10 colonnes supplémentaires à la fin de chaque ligne dans chaque couche et initialise les éléments de ces nouvelles colonnes à 0 (la valeur par défaut d'Integer, qui est le type d'élément du tableau).

La deuxième instruction ReDim crée un autre tableau et copie tous les éléments adaptés. Toutefois, les cinq colonnes sont perdus à la fin de chaque ligne dans chaque couche. Cela n'est pas un problème si vous avez fini d'utiliser ces colonnes. La réduction de la taille d'un grand tableau peut libérer de la mémoire dont vous n'avez plus besoin.

La troisième instruction ReDim crée un autre tableau et supprime cinq autres colonnes de la fin de chaque ligne dans chaque couche. Cette fois-ci, elle ne copie pas les éléments existants. Cette instruction rétablit la taille d'origine du tableau. Étant donné que l'instruction n'inclut pas le modificateur Preserve, elle définit tous les éléments de tableau à leurs valeurs par défaut d'origine.

Pour plus d'exemples, consultez Tableaux.

Voir aussi