Partager via


Conversion des tableaux (Visual Basic)

Vous pouvez convertir un type de tableau en un autre type de tableau à condition de respecter les conditions suivantes :

  • Rang égal. Les rangs des deux tableaux doivent être identiques, c’est-à-dire qu’ils doivent avoir le même nombre de dimensions. Toutefois, les longueurs des dimensions respectives n’ont pas besoin d’être identiques.

  • Type de données d’élément. Les types de données des deux tableaux doivent être des types de référence. Vous ne pouvez pas convertir un tableau Integer en un Long ou même en un Object, car au moins un type valeur est impliqué. Pour plus d’informations, consultez Types valeur et Types de référence.

  • Convertibilité. Une conversion, soit par élargissement soit par rétrécissement, doit être possible entre les types d’éléments des deux tableaux. Un exemple qui échoue cette exigence est une tentative de conversion entre un String tableau 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.

La conversion d’un type de tableau en un autre est une extension ou une restriction selon que la conversion des éléments respectifs est une extension ou une restriction. Pour plus d’informations, consultez Widening and Narrowing Conversions.

Conversion en tableau d’objets

Lorsque vous déclarez un Object tableau sans l’initialiser, son type d’élément est Object tant qu’il reste non initialisé. Lorsque vous la définissez sur un tableau d’une classe spécifique, elle prend le type de cette classe. Toutefois, son type sous-jacent est toujours Object, et vous pouvez ensuite le définir sur un autre tableau d’une classe non liée. Étant donné que toutes les classes dérivent de Object, vous pouvez modifier le type d’élément du tableau de n’importe quelle classe en n’importe quelle autre classe.

Dans l’exemple suivant, aucune conversion n’existe entre les types student et String, mais les deux dérivent de Object, donc toutes les affectations 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 initialement un tableau avec une classe spécifique, son type d’élément sous-jacent est cette classe. Si vous l’avez ensuite défini sur un tableau d’une autre classe, il doit y avoir une conversion entre les deux classes.

Dans l'exemple suivant, students est un tableau student. Étant donné qu’aucune conversion n’existe entre String et student, la dernière instruction échoue.

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