En Visual Basic, les tableaux constituent une structure de longueur fixe ou variable, qui stocke des éléments du même type. Les tableaux dynamiques nécessitent une attention particulière lors de l'initialisation et du changement de taille.
Dans VB6, il n'y avait que des tableaux statiques et dynamiques, avec une taille fixe ou variable. Dans VB.NET, des tableaux unidimensionnels, multidimensionnels et en escalier de tout type sont entièrement réalisés avec sécurité de type.
Les erreurs fréquentes —
Toujours initialiser le tableau avant son utilisation et modifier sa taille avec précaution :
' Déclaration Dim arr() As Integer ' Initialisation ReDim arr(4) ' Index 0–4 arr(0) = 1 ' Changement de taille en conservant les valeurs ReDim Preserve arr(6)
Caractéristiques clés :
Que se passera-t-il si un tableau est déclaré mais non initialisé ?
Pour des tableaux unidimensionnels de type Dim arr() As Integer, la variable existe, mais le tableau lui-même n'est pas alloué, un accès à arr.Length déclenchera une exception.
Peut-on utiliser ReDim Preserve pour changer la taille d'un tableau multidimensionnel dans les deux dimensions ?
Non, ReDim Preserve autorise seulement le changement de la dernière dimension, sinon une erreur d'exécution se produira.
Que se passe-t-il avec les éléments du tableau lors de l'augmentation de la taille via ReDim Preserve ?
Les anciennes valeurs seront conservées, et les nouveaux éléments recevront des valeurs par défaut (par exemple, 0 pour Integer, Nothing pour les types de référence).
** Cas négatif
Le tableau est déclaré, mais non initialisé (Dim arr() As Integer), et en accédant à arr.Length, nous obtenons NullReferenceException.
Avantages :
Inconvénients :
** Cas positif
Le tableau est toujours explicitement initialisé via ReDim, le changement de taille se fait uniquement en dehors de la boucle principale, et pour les listes souvent modifiées, List(Of Integer) est utilisé.
Avantages :
Inconvénients :