Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
È possibile convertire un tipo di matrice in un tipo di matrice diverso, purché soddisfino le condizioni seguenti:
Pari Grado I ranghi delle due matrici devono essere uguali, ovvero devono avere lo stesso numero di dimensioni. Tuttavia, le lunghezze delle rispettive dimensioni non devono essere uguali.
Tipo di dati dell'elemento. I tipi di dati degli elementi di entrambe le matrici devono essere tipi di riferimento. Non è possibile convertire una
Integer
matrice in unaLong
matrice o anche in unaObject
matrice, perché è coinvolto almeno un tipo di valore. Per altre informazioni, vedere Tipi valore e tipi di riferimento.Convertibilità. Una conversione, sia di ampliamento che di riduzione, deve essere possibile tra i tipi di elemento dei due array. Un esempio che non riesce a questo requisito è una conversione tentata tra una
String
matrice e una matrice di una classe derivata da System.Attribute. Questi due tipi non hanno nulla in comune e non esiste alcuna conversione di alcun tipo tra di essi.
Una conversione di un tipo di matrice in un'altra è più ampia o ridotta a seconda che la conversione dei rispettivi elementi sia più ampia o ridotta. Per altre informazioni, vedere Conversioni di tipo Widening and Narrowing.
Conversione in una matrice di oggetti
Quando si dichiara un Object
array senza inizializzarlo, il tipo di elemento rimane Object
finché resta non inizializzato. Quando lo si imposta su una matrice di una classe specifica, assume il tipo di tale classe. Tuttavia, il tipo sottostante è ancora Object
e successivamente è possibile impostarlo su un'altra matrice di una classe non correlata. Poiché tutte le classi derivano da Object
, è possibile modificare il tipo di elemento della matrice da qualsiasi classe a qualsiasi altra classe.
Nell'esempio seguente non esiste alcuna conversione tra tipi student
e String
, ma entrambi derivano da Object
, quindi tutte le assegnazioni sono valide.
' 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 un array di dati
Se in origine si dichiara una matrice con una classe specifica, il tipo di elemento sottostante è tale classe. Se successivamente la si imposta su una matrice di un'altra classe, è necessario eseguire una conversione tra le due classi.
Nell'esempio seguente, students
è un array student
. Poiché non esiste alcuna conversione tra String
e student
, l'ultima istruzione ha esito negativo.
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