Come creare gli array in Visual Basic

Visual Basic mi permette di definire array con una o più dimensioni tramite l'istanza del tipo System.Array.

Come dichiarare un array

Per definire un array monodimensionale (vettore) utilizzo il comando Dim aggiungendo due parentesi tonde dopo il nome della variabile.

Dim nomearray() As tipo

Gli array sono variabili di riferimento, ossia contengono l'indirizzo di memoria dove si trova il dato e non il dato stesso.

Esempio

Dim anno() As Integer

Gli elementi dell'array devono essere sempre dello stesso tipo. Ad esempio, interi, stringhe, ecc.

Per definire in modo esplicito il numero degli elementi dell'array utilizzo l'istruzione ReDim dopo la dichiarazione.

ReDim nomearray(n)

Dove n è l'indice massimo dell'array.

Esempio

ReDim anno(2)
anno(0)=2000
anno(1)=2001
anno(2)=2002
anno(3)=2003

L'indice 3 non è ammesso perché l'indice massimo è 2. In questo caso VB solleva un'eccezione.

Esempio

Dim anno() As Integer
Redim anno(3)

Come assegnare i dati in un'array

Posso fare l'assegnazione dei valori al momento della dichiarazione, elencando i valori tra parentesi graffe, separati da una virgola.

Esempio

Dim anno() As Integer = {2000,2001,2002}

Se la type inference è attiva in Visual Basic, posso evitare di dichiarare il tipo.

Lo deduce implicitamente VB

Esempio

Dim nomearray() = New Integer() {2000,2001,2002}

In alternativa, posso registrare un dato in un singolo elemento usando il nome dell'array seguito da due parentesi tonde dove indico la posizione dell'elemento nell'indice.

nomearray(indice)=dato

Il primo elemento dell'array ha indice 0, il secondo ha indice 1, ecc.

Pertanto, l'ultimo elemento di un array composto da n elementi ha un indice pari a n-1.

Esempio

Questo array è composto da n=3 elementi.

anno(0)=2000
anno(1)=2001
anno(2)=2002

L'ultimo elemento occupa la posizione 2 nell'indice.

Come richiamare un elemento

Per richiamare il valore contenuto in un elemento dell'array, digito il nome dell'array seguito dalle parentesi tonde.

Tra le parentesi indico la posizione dell'elemento che voglio richiamare.

nomearray(indice)

Esempio

Per stampare sulla console il contenuto dell'elemento dell'array con indice 3 digito anno(3)

Console.Write(anno(3))

Come creare un array multidimensionale

Per definire un array a due dimensioni (matrice) devo indicare due indici anziché 1.

Dim nomearray(,) As tipo

In questo caso tra le parentesi tonde ho inserito una virgola. Vuol dire che l'array utilizza due indici (x,y).

Esempio

Dim nomearray(,) As Integer
Redim nomearray(3,3)

In questo caso ho creato una matrice 3x3 (tre righe e tre colonne).

Come funziona l'assegnazione negli array

L'assegnazione dei valori è analoga ai vettori monodimensionali.

Devo soltanto indicare due indici tra le parentesi tonde anziché uno.

Esempio

nomearray(0,0)=1
nomearray(0,1)=2
nomearray(0,2)=3
nomearray(1,0)=4
nomearray(1,1)=5
nomearray(1,2)=6
nomearray(2,0)=7
nomearray(2,1)=8
nomearray(2,2)=9

Come richiamare un elemento dell'array

Allo stesso modo, per richiamare il valore di un elemento devo indicare entrambi gli indici tra le parenti tonde.

Esempio

nomearray(2,2)

Un array a tre dimensioni

Per definire un array a tre dimensioni (tensore) indico tre indici.

Dim nomearray(,,) As tipo

In questo caso ci sono due virgole. Vuol dire che l'array ha tre indici (x,y,z).

Esempio

Dim nomearray(,,) As Integer
Redim nomearray(3,3,3)

In questo caso ho creato un tensore 3x3x3.

L'assegnazione e il richiamo dei valori è simile alla matrice, devo soltanto specificare tre indici anziché due.

Esempio

nomearray(0,0,0)=1
nomearray(0,0,1)=2
nomearray(0,0,2)=3
nomearray(0,0,0)=4
nomearray(0,1,1)=5
nomearray(0,2,2)=6
....

Gli array con un tipo di dato personalizzato

In Visual Basic posso creare array anche usando un tipo di dato personalizzato.

Esempio

Creo una classe chiamata Persone() con due campi (nome, voto) di tipo pubblico.

Public Class Persone
Public nome As String
Public voto As Integer
End Class

Poi definisco un array studenti che richiama la classe Persone come un tipo di dato personalizzato.

Uso l'istruzione With per inserire dei valori nell'array.

Dim studenti As Persone() =
{
New Persone With { .Nome="Tom Smith", .voto = 27 },
New Persone With { .Nome="Sam Red", .voto = 25 }
}

Infine richiamo e stampo un elemento dell'array.

Per farlo indico il nome dell'array (studenti) seguito dall'indice dell'elemento tra le parentesi tonde e, dopo un punto, dal campo a cui voglio accedere.

Ad esempio, voglio vedere il voto del secondo studente

Console.Write(studenti(1).voto)

L'output del programma è

25

Gli array con un tipo di dato anonimo

Per definire un array posso anche usare un tipo di dato anonimo senza richiamare una classe per definire i campi dell'array.

Esempio

Definisco un array studenti con la funzione Dim e inserisco i dati con le clausole New e With

Dim studenti =
{
New With { .Nome="Tom Smith", .voto = 27 },
New With { .Nome="Sam Red", .voto = 25 }
}

Dopo ogni With indico tra parentesi graffe i nomi dei campi e i valori da assegnare.

Il primo With definisce per inferenza il nome e il tipo di dato dei campi.

Il risultato è un array composto da due righe.

Nota. Negli inserimenti successivi al primo With devo rispettare sia l'ordine di presentazione dei campi che il tipo di dato di ogni campo.

Per aggiungere nuove righe all'array dopo l'inizializzazione, modifico la dimensione dell'array con l'istruzione Redim e la clausola Preserve.

Poi inserisco la nuova riga con un'assegnazione rispettando l'ordine e il tipo di dato dei campi.

ReDim Preserve studenti2(2)
studenti2(2) = New With {.nome = "John White", .voto = 30}

E così via.

 


 

Segnalami un errore, un refuso o un suggerimento per migliorare gli appunti

FacebookTwitterLinkedinLinkedin
knowledge base

Visual Basic .NET

Il linguaggio di programmazione

Visual Studio