Conversioni di matrici (Visual Basic)Array Conversions (Visual Basic)

È possibile convertire un tipo di matrice in un tipo di matrice diverso purché si soddisfino le condizioni seguenti:You can convert an array type to a different array type provided you meet the following conditions:

  • Rango uguale.Equal Rank. Le classificazioni delle due matrici devono essere uguali, ovvero devono avere lo stesso numero di dimensioni.The ranks of the two arrays must be the same, that is, they must have the same number of dimensions. Tuttavia, non è necessario che le lunghezze delle rispettive dimensioni siano uguali.However, the lengths of the respective dimensions do not need to be the same.

  • Tipo di dati dell'elemento.Element Data Type. I tipi di dati degli elementi di entrambe le matrici devono essere tipi di riferimento.The data types of the elements of both arrays must be reference types. Non è possibile convertire una matrice di Integer in una matrice di Long o anche in una matrice Object, perché è necessario almeno un tipo di valore.You cannot convert an Integer array to a Long array, or even to an Object array, because at least one value type is involved. Per altre informazioni, vedere Value Types and Reference Types.For more information, see Value Types and Reference Types.

  • Convertibilità della.Convertibility. È necessario che sia possibile eseguire una conversione verso un tipo di ingrandimento o una riduzione tra i tipi di elemento delle due matrici.A conversion, either widening or narrowing, must be possible between the element types of the two arrays. Un esempio in cui si verifica un errore di questo requisito è un tentativo di conversione tra una matrice di String e una matrice di una classe derivata da System.Attribute.An example that fails this requirement is an attempted conversion between a String array and an array of a class derived from System.Attribute. Questi due tipi non hanno nulla in comune e non esiste alcuna conversione di alcun tipo.These two types have nothing in common, and no conversion of any kind exists between them.

Una conversione di un tipo di matrice in un altro viene ampliata o ristretta a seconda che la conversione dei rispettivi elementi sia allargata o ridotta.A conversion of one array type to another is widening or narrowing depending on whether the conversion of the respective elements is widening or narrowing. Per altre informazioni, vedere Widening and Narrowing Conversions.For more information, see Widening and Narrowing Conversions.

Conversione in una matrice di oggettiConversion to an Object Array

Quando si dichiara una matrice di Object senza inizializzarla, il relativo tipo di elemento viene Object purché rimanga non inizializzato.When you declare an Object array without initializing it, its element type is Object as long as it remains uninitialized. Quando lo si imposta su una matrice di una classe specifica, viene utilizzato il tipo di tale classe.When you set it to an array of a specific class, it takes on the type of that class. Tuttavia, il tipo sottostante è ancora Object ed è possibile impostarlo successivamente su un'altra matrice di una classe non correlata.However, its underlying type is still Object, and you can subsequently set it to another array of an unrelated class. Poiché tutte le classi derivano da Object, è possibile modificare il tipo di elemento della matrice da qualsiasi classe a qualsiasi altra classe.Since all classes derive from Object, you can change the array's element type from any class to any other class.

Nell'esempio seguente non esiste alcuna conversione tra i tipi student e String, ma entrambi derivano da Object, quindi tutte le assegnazioni sono valide.In the following example, no conversion exists between types student and String, but both derive from Object, so all assignments are valid.

' 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.  

Tipo sottostante di una matriceUnderlying Type of an Array

Se si dichiara originariamente una matrice con una classe specifica, il relativo tipo di elemento sottostante è tale classe.If you originally declare an array with a specific class, its underlying element type is that class. Se successivamente lo si imposta su una matrice di un'altra classe, è necessario eseguire una conversione tra le due classi.If you subsequently set it to an array of another class, there must be a conversion between the two classes.

Nell'esempio seguente students è una matrice di student.In the following example, students is a student array. Poiché non esiste alcuna conversione tra String e student, l'ultima istruzione ha esito negativo.Since no conversion exists between String and student, the last statement fails.

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  

Vedere ancheSee also