Dépannage des tableaux (Visual Basic)
Cette page répertorie quelques problèmes courants pouvant survenir quand vous utilisez des tableaux.
Erreurs de compilation Déclaration et initialisation d’un tableau
Les erreurs de compilation peuvent provenir d’une mauvaise compréhension des règles de déclaration, création et initialisation des tableaux. Les causes les plus courantes de cette erreur sont les suivantes :
Fournir une clause Nouvel opérateur après avoir spécifié des longueurs de dimension dans la déclaration de la variable du tableau. Les lignes de code suivantes affichent les déclarations invalides de ce type.
Dim INVALIDsingleDimByteArray(2) As Byte = New Byte()
Dim INVALIDtwoDimShortArray(1, 1) As Short = New Short(,)
Dim INVALIDjaggedByteArray(1)() As Byte = New Byte()()
Spécifier des longueurs de dimension supérieures à celles du tableau de niveau supérieur d’un tableau en escalier. La ligne de code suivante affiche une déclaration invalide de ce type.
Dim INVALIDjaggedByteArray(1)(1) As Byte
Omettre le mot clé
New
lors de la spécification des valeurs d’élément. La ligne de code suivante affiche une déclaration invalide de ce type.Dim INVALIDoneDimShortArray() As Short = Short() {0, 1, 2, 3}
Fournir une clause
New
sans accolades ({}
). Les lignes de code suivantes affichent les déclarations invalides de ce type.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)
Accéder à un tableau hors limites
Le processus d’initialisation d’un tableau attribue une limite supérieure et une limite inférieure à chaque dimension. Chaque accès à un élément du tableau doit spécifier un index ou un indice valide pour chaque dimension. Si un index se trouve en dessous de sa limite inférieure ou au-dessus de sa limite supérieure, une exception IndexOutOfRangeException se produit. Le compilateur ne pouvant pas détecter une telle erreur, une erreur se produit lors de l’exécution.
Détermination des limites
Si un autre composant transmet un tableau à votre code, par exemple en tant qu’argument de procédure, vous ne connaissez pas la taille de ce tableau ou la longueur de ses dimensions. Vous devez systématiquement déterminer la limite supérieure pour chaque dimension d’un tableau avant toute tentative d'accès à l'un de ses éléments. Si le tableau a été créé par d’autres moyens qu’une clause Visual Basic New
, la limite inférieure peut être autre que 0 ; il est également plus sûr de déterminer cette limite inférieure.
Spécification de la dimension
Lorsque vous déterminez les limites d’un tableau multidimensionnel, veillez à spécifier la dimension. Les paramètres dimension
des méthodes GetLowerBound et GetUpperBound sont basés sur 0, tandis que les paramètres Rank
de Visual Basic LBound et UBound des fonctions sont basés sur 1.