English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Array di C#

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.

Rappresentazione dell'array

Dichiarazione e inizializzazione 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 };

Inizializzazione differita

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 };

Accesso agli elementi dell'array

È 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 all'array

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 accedere all'array

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);
}

Metodi LINQ

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

Passare un array come parametro

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.