Partager via


Conversion des tableaux

Mise à jour : novembre 2007

Vous pouvez convertir un type tableau vers un autre type, pourvu que les conditions suivantes soient remplies :

  • Rang égal. Les rangs des deux tableaux doivent être identiques ; autrement dit, les deux tableaux doivent avoir le même nombre de dimensions. Toutefois, il n'est pas obligatoire que la longueur des dimensions respectives soit identique.

  • Type de données des éléments. Les types de données des éléments des deux tableaux doivent être des types référence. Vous ne pouvez pas convertir un tableau de type Integer en tableau Long ou même Object, parce que cette opération fait intervenir au moins un type valeur. Pour plus d'informations, consultez Types valeur et types référence.

  • Convertibilité. Une conversion, qu'elle soit restrictive ou étendue, doit être possible entre les types d'éléments des deux tableaux. Un exemple qui ne satisfait pas à cette condition est une tentative de conversion entre un tableau String et un tableau d'une classe dérivée de System.Attribute. Ces deux types n'ont rien en commun et aucune conversion n'existe entre eux.

Les conversions entre deux types tableau sont soit étendues, soit restrictives, selon qu'elles élargissent ou rétrécissent leurs éléments respectifs. Pour plus d'informations, consultez Conversions étendues et restrictives.

Conversion vers un tableau de type Object

Lorsque vous déclarez un tableau Object, son type d'élément reste Object tant qu'il n'est pas initialisé. Lorsque vous le configurez en tableau de classe particulière, il prend le type de cette classe. Toutefois, son type sous-jacent reste Object et vous pouvez ensuite le configurer en un autre tableau de classe non apparentée. Étant donné que toutes les classes sont dérivées du type Object, vous pouvez modifier le type d'élément du tableau en remplaçant sa classe par toute autre classe.

Dans l'exemple ci-dessous, aucune conversion n'existe entre les types student et String, mais ils sont tous deux dérivés du type Object et, par conséquent, toutes les assignations sont valides.

' Assume student has already been defined as a class.
Dim testArray() As Object
' testArray is still an Object array at this point.
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
testArray = New student(3) {}
' testArray is now of type student().
testArray = names
' testArray is now a String array.

Type sous-jacent d'un tableau

Si vous déclarez à l'origine un tableau avec une classe particulière, son type d'élément sous-jacent correspond à cette classe. Par la suite, si vous le configurez en tableau de classe différente, une conversion doit être effectuée entre les deux classes.

Dans l'exemple ci-après, students représente un tableau student. Comme aucune conversion n'existe entre String et student, la dernière instruction se solde par un échec.

Dim students() As student
Dim names() As String = New String(3) {"Name0", "Name1", "Name2", "Name3"}
students = New Student(3) {}
' The following statement fails at compile time.
students = names

Voir aussi

Tâches

Comment : convertir un objet en un autre type dans Visual Basic

Concepts

Types de données en Visual Basic

Conversions implicites et explicites

Modification des valeurs lors de la conversion

Conversion entre des chaînes et d'autres types

Programmation sans type dans Visual Basic

Référence

Liste des types de données (Visual Basic)

Fonctions de conversion de types de données

Autres ressources

Conversions de type en Visual Basic

Tableaux dans Visual Basic