Esercitazione sugli array C#: creazione, dichiarazione, inizializzazione

⚡ Riepilogo intelligente

Gli array in C# memorizzano una collezione di elementi di dimensioni fisse che condividono lo stesso tipo di dati sotto un unico nome di variabile. Ogni elemento si trova in un indice basato su zero, quindi la dichiarazione, l'inizializzazione e l'accesso ai valori rimangono veloci e prevedibili.

  • ???? Definizione: Un array contiene più valori di un unico tipo in posizioni indicizzate, accessibili tramite una singola variabile.
  • ✅ Dichiarazione: Un tipo di dato seguito da parentesi quadre e da un nome dichiara un array, ad esempio Int32[] values.
  • 🔢 inizializzazione: La nuova parola chiave imposta la dimensione, quindi ogni indice riceve un valore come values[0]=1.
  • 🔍 Accesso: L'indicizzazione a base zero legge o scrive qualsiasi elemento, quindi il primo elemento è values[0] e il conteggio inizia da 0.
  • 🔁 Iterazione: Un ciclo foreach scorre ogni elemento senza indice, evitando così errori di accesso fuori intervallo su array di grandi dimensioni.
  • 🤖 Assistenza AI: GitHub Copilot genera codice boilerplate per gli array, mentre ML.NET carica array numerici come caratteristiche per i modelli di machine learning.

Array in C#

Cos'è un array in C#?

Un array viene utilizzato per memorizzare una raccolta o una serie di elementi. Questi elementi saranno dello stesso tipo.

Quindi, ad esempio, se avessi un array di valori interi, l'array potrebbe essere una raccolta di valori come [1, 2, 3, 4]. Qui il numero di elementi nell'array è 4.

Gli array sono utili quando si desidera archiviare una raccolta di valori dello stesso tipo. Quindi, invece di dichiarare a variabile per ogni elemento, puoi semplicemente dichiarare una variabile.

Questa variabile punterà a un array o elenco di elementi, che sarà responsabile della memorizzazione degli elementi dell'array.

Diamo un'occhiata a come possiamo lavorare con gli array in C#. Nel nostro esempio, dichiareremo un array di numeri interi e lavoreremo con essi di conseguenza.

Tieni presente che tutto il codice seguente viene creato nel file Program.cs.

Passo 1) Dichiarazione di un array – Il primo passo è dichiarare un array. Vediamo come possiamo ottenere questo risultato con l'esempio di codice seguente.

Array in C#

Code Spiegazione:-

  1. La prima parte è la tipo di dati. Specifica il tipo di elementi utilizzati nell'array. Quindi nel nostro caso stiamo creando un array di numeri interi.
  2. La seconda parte [ ], che specifica il rango dell'array. (Il rango è un segnaposto che specifica il numero di elementi che l'array conterrà)
  3. Il prossimo è il nome dell'array che nel nostro caso è "valori". Nota che vedi una sottolineatura ondulata verde, non preoccuparti. Questo è solo .Net che dice che hai dichiarato un array, ma non lo usi da nessuna parte.

Passo 2) Il passo successivo è inizializzare l'array. Qui specificheremo il numero di valori che l'array conterrà. Assegneremo anche valori a ciascun elemento dell'array.

Array in C#

Code Spiegazione:-

  1. Per prima cosa, impostiamo il numero di elementi che l'array conterrà a 3. Quindi tra parentesi quadre, stiamo dicendo che l'array conterrà 3 elementi.
  2. Successivamente, assegniamo dei valori a ciascun elemento dell'array. Possiamo farlo specificando il nome della variabile e la sua posizione nell'array. Quindi, values[0] significa che stiamo memorizzando un valore nella prima posizione dell'array. Analogamente, per accedere alla seconda posizione, utilizziamo la notazione values[1] e così via.

Note:: – Negli Array, la posizione dell'indice inizia da 0.

Passo 3) Mostriamo ora i singoli elementi dell'array nella Console. Aggiungiamo il codice seguente per raggiungere questo obiettivo.

Array in C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args) 
  {
   Int32[] value;
   value=new Int32[3];
   
   value[0]=1;
   value[1]=2;
   value[2]=3;
   
   Console.WriteLine(value[0]);
   Console.WriteLine(value[1]);
   Console.WriteLine(value[2]);
    
   Console.ReadKey(); 
  }
 }
}

Code Spiegazione:-

Questa è la parte semplice in cui utilizziamo semplicemente il metodo Console.WriteLine per inviare ciascun valore dell'elemento alla console.

Tieni presente che, ancora una volta, stiamo accedendo a ciascun elemento con l'aiuto del nome della variabile dell'array insieme alla posizione dell'indice.

Se il codice sopra riportato viene inserito correttamente e il programma viene eseguito, verrà visualizzato il seguente output.

Produzione:

Array in C#

Dall'output, puoi vedere tutti i valori dell'array visualizzati nella Console.

Come scorrere un array C# usando foreach

Leggere ogni elemento tramite il suo indice funziona, ma diventa noioso quando un array contiene molti valori. Il ciclo foreach offre un modo più pulito per visitare ogni elemento di un array in ordine senza traccrea tu stesso una variabile indice.

L'istruzione foreach prende ogni elemento dell'array uno alla volta e lo copia in una variabile di ciclo. Questa variabile viene poi utilizzata all'interno del corpo del ciclo. Poiché il ciclo si arresta automaticamente all'ultimo elemento, foreach elimina il rischio di leggere oltre la fine dell'array.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   Int32[] values = new Int32[3] {1, 2, 3};
   foreach (Int32 item in values)
   {
    Console.WriteLine(item);
   }
   Console.ReadKey();
  }
 }
}

L'esempio sopra dichiara e inizializza un array di tre interi, quindi lo attraversa con foreach. Ad ogni passaggio la variabile articolo riceve il valore successivo e Console.WriteLine lo stampa. L'output è costituito dai numeri 1, 2 e 3 su righe separate.

Punti chiave da ricordare sull'utilizzo del ciclo foreach con gli array:

  • La variabile del ciclo è di sola lettura, quindi foreach è più adatto per leggere i valori piuttosto che per modificarli direttamente.
  • Per modificare gli elementi durante lo scorrimentoping, utilizzare invece un ciclo for con un indice.
  • Il ciclo foreach funziona con array monodimensionali, array multidimensionali e qualsiasi collezione che supporti l'iterazione.

Array multidimensionali in C#

Gli array mostrati finora sono monodimensionali, ovvero memorizzano un semplice elenco di valori. C# supporta anche array multidimensionali, che dispongono gli elementi in una griglia di righe e colonne. Un array bidimensionale è la forma più comune ed è adatto a dati come matrici, tabelloni di gioco e tabelle.

Per dichiarare un array bidimensionale, è sufficiente inserire una virgola tra parentesi quadre. Ogni virgola aggiuntiva indica una dimensione in più, quindi int[,] rappresenta un array bidimensionale e int[,,] un array tridimensionale. Gli elementi vengono quindi raggiunti tramite un indice per ogni dimensione.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[,] matrix = new int[2, 2] { {1, 2}, {3, 4} };
   Console.WriteLine(matrix[0, 0]);
   Console.WriteLine(matrix[1, 1]);
   Console.ReadKey();
  }
 }
}

Qui l'array matrix contiene due righe e due colonne. L'elemento matrix[0, 0] restituisce 1 e matrix[1, 1] restituisce 4. Il numero di dimensioni è fisso quando l'array viene dichiarato, mentre la dimensione di ciascuna dimensione viene impostata quando l'array viene creato.

Array irregolari in C#

Un array irregolare è un array i cui elementi sono a loro volta array. A differenza di un array multidimensionale rettangolare, ogni array interno può avere una lunghezza diversa, motivo per cui un array irregolare viene spesso chiamato array di array. Questa flessibilità è utile quando le righe contengono naturalmente un numero diverso di valori.

Si dichiara un array irregolare con due coppie di parentesi quadre, quindi si crea ciascun array interno separatamente. L'esempio seguente crea un array irregolare in cui la prima riga contiene tre valori e la seconda riga ne contiene due.

using System;
namespace DemoApplication
{
 class Program
 {
  static void Main(string[] args)
  {
   int[][] jagged = new int[2][];
   jagged[0] = new int[] {1, 2, 3};
   jagged[1] = new int[] {4, 5};
   Console.WriteLine(jagged[0][2]);
   Console.WriteLine(jagged[1][1]);
   Console.ReadKey();
  }
 }
}

L'espressione jagged[0][2] legge il terzo elemento della prima riga, che è 3, e jagged[1][1] legge il secondo elemento della seconda riga, che è 5. Poiché ogni riga è un array separato, gli array irregolari utilizzano la memoria in modo efficiente quando la lunghezza delle righe varia, anche se necessitano di un passaggio aggiuntivo per inizializzare ogni array interno.

DOMANDE FREQUENTI

La proprietà Length restituisce il numero totale di elementi in un array C#. Ad esempio, values.Length restituisce 3 per un array di tre elementi. Per gli array multidimensionali, GetLength(dimension) restituisce la dimensione di ciascuna dimensione specifica.

Gli array AC# hanno una dimensione fissa impostata al momento della creazione, mentre le List si espandono e si riducono dinamicamente. Gli array sono più veloci per dati di dimensioni fisse e utilizzano un overhead inferiore, mentre le List sono più adatte a collezioni il cui numero di elementi cambia in fase di esecuzione.

Un array C# standard memorizza elementi di un singolo tipo dichiarato, quindi non è consentito mescolare tipi diversi. Per contenere tipi diversi, è possibile dichiarare un array object[] o utilizzare una collezione come ArrayList, sebbene entrambe le soluzioni compromettano la sicurezza dei tipi in fase di compilazione.

Il metodo statico Array.Sort ordina gli elementi di un array C# in ordine crescente sul posto. Passa l'array a Array.Sort(values) e usa Array.Reverse Successivamente, si procede all'ordinamento decrescente. L'ordinamento funziona con numeri, stringhe e altri tipi comparabili.

Il metodo Array.Copy duplica un intervallo di elementi da un array a un altro, mentre il metodo Clone crea una copia superficiale dell'intero array. Assegnare una variabile array a un'altra copia solo il riferimento, non gli elementi sottostanti.

Si verifica un'eccezione IndexOutOfRangeException quando il codice accede a una posizione inesistente in un array, ad esempio values[5] in un array di tre elementi. Poiché gli array C# sono basati su indice zero, gli indici validi vanno da 0 a Length meno uno. È sempre necessario convalidare prima un indice.

Sì. GitHub Copilot suggerisce dichiarazioni di array, inizializzazione e logica di ciclo da un commento o nome di metodo all'interno di Visual Studio e VS Code. RevEsamina attentamente ogni suggerimento per verificare le dimensioni e i limiti degli indici corretti, poiché Copilot può introdurre errori di un'unità e valori fuori intervallo.

ML.NET rappresenta i vettori di caratteristiche e gli input del modello come array C#, in genere array float[]. I dati di addestramento vengono caricati in array o span e le previsioni restituiscono array di punteggi. Le dimensioni fisse e l'indicizzazione rapida degli array li rendono efficienti per le pipeline di machine learning.

Riassumi questo post con: