Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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 unLong
ou même en unObject
, 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