Condividi tramite


Conversioni di matrici (Visual Basic)

È possibile convertire un tipo di matrice in un altro tipo di matrice, ma solo in presenza di determinate condizioni:

  • Numero di dimensioni uguale. È necessario che le matrici presentino lo stesso numero di dimensioni.Non è tuttavia necessario che corrispondano anche le lunghezze delle rispettive dimensioni.

  • Tipo di dati degli elementi. È necessario che i tipi di dati degli elementi di entrambe le matrici siano tipi di riferimento.Non è possibile convertire una matrice Integer in una matrice Long né in una matrice Object, perché è interessato almeno un tipo valore.Per ulteriori informazioni, vedere Tipi valore e tipi riferimento.

  • Possibilità di conversione. È necessario che sia possibile una conversione, sia essa verso un tipo di dati più grande o più piccolo, tra i tipi di elementi delle due matrici.Un esempio di mancato adempimento di questo requisito è un tentativo di conversione fra una matrice String e una matrice di una classe derivata da System.Attribute.I due tipi non hanno alcun elemento in comune e la conversione tra loro non è possibile.

La conversione di un tipo di matrice in un altro è di ampliamento o di restrizione a seconda che la conversione dei rispettivi elementi sia di ampliamento o restrizione.Per ulteriori informazioni, vedere Conversioni di ampliamento e restrizione (Visual Basic).

Conversione in una matrice Object

Quando si dichiara una matrice Object senza inizializzarla, il tipo di elemento della matrice è Object e rimarrà tale finché non verrà inizializzata.Quando viene impostata su una matrice di una classe specifica, assume il tipo di quella classe.Tuttavia il tipo sottostante è ancora Object ed è possibile quindi impostarla successivamente su un'altra matrice di una classe non correlata.Poiché tutte le classi derivano da Object, è possibile trasformare il tipo di elemento della matrice da qualsiasi classe in qualsiasi altra classe.

Nell'esempio che segue non è possibile alcuna conversione tra i tipi student e String, ma entrambi derivano da Object, pertanto 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.

tbatye4h.collapse_all(it-it,VS.110).gifTipo sottostante di una matrice

Se originariamente si dichiara una matrice con una classe specifica, il tipo di elemento sottostante sarà rappresentato da quella classe.Se successivamente viene impostata su una matrice di un'altra classe, è necessario che esista una conversione tra le due classi.

Nell'esempio che segue students è una matrice student.Dal momento che non è possibile alcuna conversione tra String e student, l'ultima istruzione avrà 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

Vedere anche

Attività

Procedura: convertire un oggetto in un altro tipo in Visual Basic

Riferimenti

Riepilogo dei tipi di dati (Visual Basic)

Funzioni di conversione del tipo (Visual Basic)

Concetti

Tipi di dati in Visual Basic

Conversioni implicite ed esplicite (Visual Basic)

Conversioni fra stringhe e altri tipi (Visual Basic)

Altre risorse

Conversioni di tipi in Visual Basic

Matrici in Visual Basic