This article is currently in the process of being translated into Italian (~99% done).
Arrays
Gli arrey funzionano come una "Collezione di oggetti", per esempio stringhe. Puoi usarli per raggruppare oggetti in un singolo gruppo, e eseguire diverse operazioni su di essi, esempio: riordinarli. Inoltre, diversi metodi nel framework funzionano con gli array, rendendo possibile accettare una serie di oggetti invece di solamente uno. Questo fatto da solo rende importante conoscere un minimo gli array.
Gli array vengono dichiarati similmente alle variabili, con una coppia di [] parentesi dopo il datatype, ad esempio:
string[] names;
Bisogna istanziare l'array per utilizzarlo, nel seguente modo:
string[] names = new string[2];
Il numero (2) è la dimensione dell'array, cioè il totale degli oggetti che si possono mettere al suo interno. Inserire oggetti in un array è semplice:
names[0] = "John Doe";
Perchè 0? Esattamente come molte cose nel mondo della programmazione, il conteggio inizia proprio da 0 invece che da 1. Quindi il primo oggetto dell'array è indicizzato come 0, il successivo è 1 e cosi via. Dovrai ricordartelo quando riempi gli array con oggetti, perchè l'eccessivo riempimento causerà una obiezione dal compilatore. Quando guardi all' inizializzatore, impostando la dimensione dell'array a 2, potrebbe sembrare logico inserire oggetti nel posto 0, 1 e 2, ma quest'ultimo oggetto è di troppo. Se lo fai, riceverai un obbiezione dal compilatore. Ne discuteremo piu avanti nel capitolo.
Precedentemente, abbiamo imparato i cicli, e ovviamente questi calzano a pennello con gli array. Il modo piu comune per prendere dati dal array è ciclare attraverso l'array e performare qualche operazione con ogni singolo valore. Utiliziamo l'array di prima per creare un esempio:
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
string[] names = new string[2];
names[0] = "John Doe";
names[1] = "Jane Doe";
foreach(string s in names)
Console.WriteLine(s);
Console.ReadLine();
}
}
}
utiliziamo il ciclo foreach perchè è il piu facile, ma sicuramente avremmo potuto utilizzare qualsiasi altro ciclo al suo posto. Anche il ciclo for è buono per gli array, per esempio se hai bisogno di contare tutti gli oggetti, come nel esempio:
for(int i = 0; i < names.Length; i++)
Console.WriteLine("Item number " + i + ": " + names[i]);
Si tratta di un ciclo semplice. Utiliziamo la proprietà lunghezza del array per decidere quante volte si esegue il ciclo, e utiliziamo il contatore (i) per scrivere a che punto del processo ci troviamo, oltre a prendere l'oggetto dal array. Esattamente come abbiamo utilizzato un numero, chiamato indicizzatore, per inserire gli oggetti nel array, possiamo utilizzarlo per prendere un oggetto specifico.
Ho spiegato precedentemente che possiamo utilizzare gli array per ordinare una serie di valore e in realtà è molto semplice. La classe array contiene un po di metodi intelligenti che funzionano con gli array. Questo esempio utilizzerà numeri invece di stringhe, per provare qualcosa di diverso, ma è possibile utilizzare anche le stringhe. Voglio mostrarti un altro metodo per popolare un array, molto piu facile se possiedi un set di oggetti piccolo e definito. Guarda:
int[] numbers = new int[5] { 4, 3, 8, 0, 5 };
In una riga abbiamo creato un array di grandezza 5, è l'abbiamo riempito con cinque numeri interi. Riempendo l'array così hai un vantaggio extra, dato chè il compilatore controllerà e si assicurerà di non mettere troppi oggetti nel array. Prova ad aggiungerne un altro - vedrai il compilatore lamentarsene.
In realtà, è possibile abbreviarlo ancora di piu, in questo modo:
int[] numbers = { 4, 3, 8, 0, 5 };
è breve, e non hai bisogno di specificarne la grandezza. Il primo approccio però può risultare piu facile da leggere piu avanti.
Proviamo a riordinare l'array - di seguito un esempio completo:
using System;
using System.Collections;
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
int[] numbers = { 4, 3, 8, 0, 5 };
Array.Sort(numbers);
foreach(int i in numbers)
Console.WriteLine(i);
Console.ReadLine();
}
}
}
L'unica cosa nuova qui è il comando Array.Sort. Puo avere diversi parametri, per vari tipi di riordine, ma in questo caso prende semplicemente il nostro array. Come puoi vedere dal risultato, il nostro array è stato riordinato. La classe array ha anche altri metodi, per esempio Reverse(). Guarda la documentazione per vedere tutte le caratteristiche della classe array.
L'array che abbiamo utilizzato fin'ora avevano una singola dimensione. Tuttavia gli array di C# possono essere multidimensionali, Delle volte chiamati "array in array". Array multidimensionali possono essere di due tipi, array rettangolari e array irregolari. Gli array rettangolari devono avere tutte le dimensioni della stessa grandezza, per cui rettangoli, mentre gli array irregolari possono avere dimensioni di varie grandezze. Array multidimensionali sono soggetti pesanti e fuori portata per questo tutorial.