Gli array sono usati per memorizzare un set di valori dello stesso tipo, in una sola variabile.
Per dichiarare un array utilizziamo la sintassi:
Dim variabileArray As tipoDato()Le parentesi tonde dopo il tipo di dato indicano che stiamo dichiarando un array.
All'atto della dichiarazione non abbiamo ancora allocato lo spazio di memoria necessario per memorizzare l'array, per farlo utilizziamo la parola chiave New, come nell'esempio
myArray = New Integer(10){}L'operazione è detta allocazione. Il numero tra parentesi indica quanti elementi può contenere l'array, ovvero la sua dimensione. Le parentesi graffe sono la lista di inizializzazione dell'array, cioè i di base valori degli elementi, sono obbligatorie anche se non contengono valori.
Ecco un esempio di array inizializzato:
myArray = New Integer(10){1, 2, 3, 4, 5, 6, 7, 8, 9, 10}Infine possiamo far riferimento ad un elemento dell'array indicandone l'indice tra parentesi tonde. Da notare che l'indice del primo elemento è 0., mentre l'elemento i-esimo ha comen indice (i-1)
Dim ilQuintoElemento As Integer
ilQuintoElemento = myArray(4)Vediamo un esempio completo:
Module modArray
    Sub Main()
        Dim i, j As Integer
        Dim numeroLanci As Integer = 56432
        Dim myRandom As Random = New Random()
        Dim arrDado As Integer() = New Integer() {0, 0, 0, 0, 0, 0}
        For i = 1 To numeroLanci
            j = myRandom.Next(0, arrDado.Length)
            arrDado(j) += 1
        Next
        Console.WriteLine("Numero" & vbTab & "Uscito" & vbTab & "Percentuale")
        For i = 1 To arrDado.Length
        	Console.WriteLine(i & vbTab & arrDado(i - 1) & vbTab & FormatNumber(arrDado(i - 1) / numeroLanci * 100, 2) & "%")
        Next
    End Sub
End ModuleGli array non hanno dei metodi per l'ordinamento, se è necessario lavorare con degli array ordinati, occorre implementare delle procedure apposta per lo scopo. In questo capitolo presenterò una procedura di ordinamento che in gergo informatico è detta Bubbole Sort, si chiama così perché facciamo in modo che i valori più piccoli (leggeri) salgano man mano in cime all'array, come delle bolle di sapone
Creiamo quindi un modulo BubbleSort che contiene le procedure per l'ordinamento.
Module modArray
    Sub Main()
        Dim i As Integer = 0
        Dim arrayDaOrdinare As Integer() = New Integer() {10, 20, 340, 21, 5, 220, 43, 92, 249, 1000, 12}
        BubbleSort.DoBubbleSort(arrayDaOrdinare)
        For i = 0 To arrayDaOrdinare.GetUpperBound(0)
        	Console.WriteLine(arrayDaOrdinare(i))
        Next
    End Sub
End Module
Module BubbleSort
    Sub DoBubbleSort(ByVal arrayDaOrdinare As Integer())
        Dim i, j As Integer
        For i = 0 To arrayDaOrdinare.GetUpperBound(0)
            For j = 0 To arrayDaOrdinare.GetUpperBound(0) - 1
                If arrayDaOrdinare(j) > arrayDaOrdinare(j + 1) Then
                	scambiaValori(arrayDaOrdinare, j)
            End If
            Next
        Next
	End Sub
Sub scambiaValori(ByVal arrayDaOrdinare As Integer(), ByVal primo As Integer)
    Dim tmp As Integer = arrayDaOrdinare(primo)
    arrayDaOrdinare(primo) = arrayDaOrdinare(primo + 1)
    arrayDaOrdinare(primo + 1) = tmp
End Sub
End ModuleNell'esempio possiamo notare l'utilizzo del metodo GetUpperBound(i) che restituisce il limite superiore della dimensione i-esima dell'array.
In VB.Net abbiamo due tipi di array multidimensionali: rettangolari ed irregolari. Quelli rettangolari sona array in cui tutte le righe hanno la stessa dimensione.
Vediamo come si definiscono
Dim matrice As Integer(,) = New Integer(2, 4){}Ed ecco un esempio in cui dichiariamo una matrice con degli elementi e poi utilizziamo due cicli For per stamparne gli elementi.
Module modArray
    Sub Main()
        Dim i, j As Integer
        Dim matrice As Integer(,) = New Integer(1, 3) {{1, 2, 4, 5}, {2, 4, 5, 6}}
        For i = 0 To matrice.GetUpperBound(0)
        	For j = 0 To matrice.GetUpperBound(1)
        		Console.WriteLine("Elemento ({0}, {1}) = {2}", i, j, matrice(i, j))
        	Next
        Next
    End Sub
End ModulePossiamo utilizzare la struttura For Each.. Next per iterare i valor di una collection
La sintassi è la seguente
For Each variabile In Oggetto
	istruzioni
NextVediamo un esempio in cui stampiamo l’elemento più grande di un array
Module modArray
    Sub Main()
    Dim massimo As Integer = 0
    Dim valore As Integer
    Dim myArray As Integer() = New Integer() {2, 4, 5, 6, 43, 432, 3, 94, 2}
    For Each valore In myArray
    	If valore > massimo Then
    		massimo = valore
    	End If
    Next
    Console.WriteLine("Il valore più grande è: " & massimo)
End Sub
End Module