Tipi di dati compositi (Visual Basic)

Oltre ai tipi di dati elementari forniti da Visual Basic, è anche possibile assemblare elementi di tipi diversi per creare tipi di dati compositi come strutture, matrici e classi. È possibile creare tipi di dati compositi da tipi elementari e da altri tipi compositi. Ad esempio, è possibile definire una matrice di elementi struttura o una struttura con membri di matrice.

Tipi di dati

Un tipo composito è diverso dal tipo di dati di uno dei relativi componenti. Ad esempio, una matrice di elementi Integer non è del tipo di dati Integer.

Il tipo di dati di una matrice viene in genere rappresentato usando il tipo di elemento, le parentesi e le virgole se necessario. Ad esempio, una matrice unidimensionale di elementi String viene rappresentata come String() e una matrice bidimensionale di elementi Boolean viene rappresentata come Boolean(,).

Tipi di struttura

Non esiste un singolo tipo di dati che comprende tutte le strutture. Ogni definizione di una struttura rappresenta invece un tipo di dati univoco, anche se due strutture definiscono elementi identici nello stesso ordine. Tuttavia, se si creano due o più istanze della stessa struttura, Visual Basic le considera dello stesso tipo di dati.

Tuple

Una tupla è una struttura leggera che contiene due o più campi i cui tipi sono predefiniti. Le tuple sono supportate a partire da Visual Basic 2017. Le tuple vengono comunemente usate per restituire più valori da una singola chiamata a un metodo senza dover passare argomenti per riferimento o creare un pacchetto dei campi restituiti in una classe o una struttura più pesante. Per altre informazioni sulle tuple, vedere l'argomento Tuple.

Tipi di matrici

Non esiste un singolo tipo di dati che comprende tutte le matrici. Il tipo di dati di una determinata istanza di una matrice è determinato da quanto segue:

  • Il fatto di essere una matrice

  • La classificazione (numero di dimensioni) della matrice

  • Il tipo di elemento della matrice

In particolare, la lunghezza di una determinata dimensione non fa parte del tipo di dati dell'istanza. Ciò è illustrato nell'esempio seguente.

Dim arrayA( ) As Byte = New Byte(12) {}  
Dim arrayB( ) As Byte = New Byte(100) {}  
Dim arrayC( ) As Short = New Short(100) {}  
Dim arrayD( , ) As Short  
Dim arrayE( , ) As Short = New Short(4, 10) {}  

Nell'esempio precedente, le variabili di matrice arrayA e arrayB vengono considerate dello stesso tipo di dati, Byte(), anche se vengono inizializzate in lunghezze diverse. Le variabili arrayB e arrayC non sono dello stesso tipo perché i relativi tipi di elemento sono diversi. Le variabili arrayC e arrayD non sono dello stesso tipo perché le relative classificazioni sono diverse. Le variabili arrayD e arrayE hanno lo stesso tipo, Short(,), perché le classificazioni e i tipi di elemento sono uguali, anche se arrayD non è ancora inizializzato.

Per altre informazioni sulle matrici, vedere Matrici.

Tipi di classe

Non esiste un singolo tipo di dati che comprende tutte le classi. Anche se una classe può ereditare da un'altra classe, ognuna è un tipo di dati separato. Più istanze della stessa classe sono dello stesso tipo di dati. Se si assegna una variabile di istanza di una classe a un'altra, non solo hanno lo stesso tipo di dati, ma puntano alla stessa istanza di classe in memoria.

Per altre informazioni sulle classi, vedere Oggetti e classi.

Vedi anche