English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le variabili vengono utilizzate per memorizzare valori letterali, mentre gli array vengono utilizzati per memorizzare più valori letterali.
Un array è una struttura dati che memorizza un numero fisso di valori testuali (elementi) dello stesso tipo di dati. Gli elementi dell'array vengono memorizzati consecutivamente nella memoria.
In C#, gli array possono essere di tre tipi: array uno-dimensionale, array multidimensionale e array a spina di pesce. In questo caso, imparerai l'array uno-dimensionale.
La figura seguente illustra la rappresentazione dell'array.
È possibile dichiarare un array specificando il tipo degli elementi con parentesi quadre.
int[] evenNums; // array di interi string[] cities; // array di stringhe
Le seguenti istruzioni dichiarano l'array e aggiungono valori a esso in una singola istruzione.
int[] evenNums = new int[5]{ 2, 4, 6, 8, 10 }; string[] cities = new string[3]{ "Mumbai", "London", "New York" };
In questo caso, l'array evenNums può memorizzare al massimo cinque interi. new int[5] il numero 5 tra le parentesi quadre indica la dimensione dell'array. Allo stesso modo, la dimensione dell'array cities è 3. Gli elementi dell'array vengono aggiunti in una lista separata da virgole all'interno delle graffe {}.
Le variabili di tipo array possono essere dichiarate con var senza parentesi quadre [].
var evenNums = new int[]{ 2, 4, 6, 8, 10 }; var cities = new string[]{ "Mumbai", "London", "New York" };
Se si desidera aggiungere elementi all'array durante la dichiarazione, la dimensione è opzionale. Il compilatore determina la dimensione in base al numero di elementi tra le parentesi graffe, come mostrato di seguito.
int[] evenNums = { 2, 4, 6, 8, 10 }; string[] cities = { "Mumbai", "London", "New York" }
L'esempio seguente dimostra la dichiarazione di un array non valida.
// È necessario specificare la dimensione int[] evenNums = new int[]; // Il numero di elementi deve essere uguale alla dimensione specificata int[] evenNums = new int[5] { 2, 4 }; // Non è possibile utilizzare var con l'inizializzazione dell'array var evenNums = { 2, 4, 6, 8, 10 };
Non è necessario dichiarare e inizializzare l'array in una singola istruzione. Puoi prima dichiarare un array e poi inizializzarlo utilizzando l'operatore new.
int[] evenNums; evenNums = new int[5]; // O evenNums = new int[]{ 2, 4, 6, 8, 10 };
È possibile accedere agli elementi dell'array tramite indici. Gli indici sono numeri associati a ciascun elemento dell'array, che vanno da 0 all'indice della dimensione dell'array-1.
Esempio: utilizzo degli indici per aggiungere, aggiornare e recuperare elementi dell'array.
int[] evenNums = new int[5]; evenNums[0] = 2; evenNums[1] = 4; // evenNums[6] = 12; // Lancia un'eccezione di tipo IndexOutOfRange in esecuzione Console.WriteLine(evenNums[0]); // Output: 2 Console.WriteLine(evenNums[1]); // Output: 4
Attenzione, tentare di aggiungere un elemento al di fuori della dimensione specificata causera' un'eccezione di tipo IndexOutOfRangeException.
Utilizzare il ciclo for per accedere agli elementi dell'array. Nell'espressione del condizionale del ciclo for utilizzare l'attributo length dell'array.
int[] evenNums = { 2, 4, 6, 8, 10 }; for(int i = 0; i < evenNums.Length; i++) { Console.WriteLine(evenNums[i]); } for(int i = 0; i < evenNums.Length; i++) { evenNums[i] = evenNums[i] + 10; // Aggiorna il valore di ciascun elemento di 10 }
Utilizzare il ciclo foreach per leggere il valore degli elementi dell'array senza utilizzare l'indice.
int[] evenNums = { 2, 4, 6, 8, 10 }; string[] cities = { "Mumbai", "London", "New York" }; foreach(var item in evenNums) { Console.WriteLine(item); } foreach(var city in cities) { Console.WriteLine(city); }
Tutti gli array in C# derivano dall'astratto System.Array.
La classe Array ha implementato l'interfaccia IEnumerable, quindi puoi utilizzare i metodi di estensione LINQ come Max(), Min(), Sum(), reverse() ecc.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; nums.Max(); // Restituisce 16 nums.Min(); // Restituisce 6 nums.Sum(); // Restituisce 55 nums.Average(); // Restituisce 55
La classe System.Array include metodi per creare, operare, cercare e ordinare gli array.
int[] nums = new int[5]{ 10, 15, 16, 8, 6 }; Array.Sort(nums); // Ordina l'array Array.Reverse(nums); // Ordina l'array in ordine decrescente Array.ForEach(nums, n => Console.WriteLine(n)); // Iterazione dell'array Array.BinarySearch(nums, 5); // Ricerca binaria
Puoi passare un array come parametro ai parametri del metodo. Un array è di tipo riferimento, quindi questo metodo può modificare il valore degli elementi dell'array.
public static void Main() { int[] nums = { 1, 2, 3, 4, 5 }; UpdateArray(nums); foreach(var item in nums) Console.WriteLine(item); } public static void UpdateArray(int[] arr) { for(int i = 0; i < arr.Length; i++) arr[i] = arr[i] + 10; }
Prosegui per conoscere Array multidimensionale e Array a spigoli.