Esercitazione sulle raccolte C# con esempi
โก Riepilogo intelligente
In C#, le collezioni offrono un modo flessibile per archiviare e gestire gruppi di oggetti. A differenza degli array, le collezioni si espandono e si riducono in fase di esecuzione, e gli spazi dei nomi System.Collections e System.Collections.Generic forniscono tipi predefiniti per liste, dizionari, stack e code.

Nel nostro tutorial precedente, abbiamo imparato come utilizzare gli array in C#. Diamo una rapida panoramica di esso, gli array nella programmazione vengono utilizzati per raggruppare un insieme di oggetti correlati. Quindi si potrebbe creare un array o un insieme di numeri interi, a cui รจ possibile accedere tramite un nome di variabile.
Che cosa sono le raccolte in C#?
Le raccolte sono simili a Array, fornisce un modo piรน flessibile di lavorare con un gruppo di oggetti.
Negli array, avresti notato che รจ necessario definire in anticipo il numero di elementi in un array. Questo doveva essere fatto quando l'array veniva dichiarato.
Ma in una raccolta non รจ necessario definire in anticipo la dimensione della raccolta. Puoi aggiungere elementi o persino rimuovere elementi dalla raccolta in qualsiasi momento. Questo capitolo si concentrerร su come possiamo lavorare con le diverse raccolte disponibili in C#.
Classi System.Collections
Il .NET Framework raggruppa le classi di collezioni originali non generiche all'interno dello spazio dei nomi System.Collections. La tabella seguente riassume i tipi principali che รจ possibile utilizzare immediatamente.
| Collezione | Descrizione |
| Lista di array | La raccolta ArrayList รจ simile agli Array tipo di dati in C#. La differenza piรน grande รจ la natura dinamica della raccolta dell'elenco di array. |
| pila | La pila รจ una collezione di casi particolari che rappresenta il concetto di ultimo entrato, primo uscito (LIFO). |
| code | La Queue รจ una collezione di custodie speciali che si basa sul principio "primo entrato, primo uscito". |
| tabella hash | Una tabella hash รจ una particolare collezione utilizzata per memorizzare coppie chiave-valore. |
| Elenco ordinato | SortedList รจ una raccolta che memorizza coppie chiave-valore nell'ordine crescente della chiave per impostazione predefinita. |
| BitArray | Un array di bit รจ un array di strutture dati che memorizza bit. |
Collezioni generiche in C#
Le classi non generiche sopra menzionate memorizzano ogni elemento come un oggetto generico, il che significa che il compilatore non puรฒ controllare il tipo e il programma paga un piccolo costo per il boxing dei valori. Per risolvere questo problema, C# ha aggiunto lo spazio dei nomi System.Collections.Generic, in cui ogni collezione รจ associata a un tipo dichiarato.
Una raccolta generica come Elenco Accetta solo stringhe, quindi gli errori vengono rilevati in fase di compilazione e non รจ necessario alcun casting quando si legge un elemento. Questo rende le collezioni generiche piรน sicure, veloci e facili da leggere, motivo per cui sono la scelta predefinita nel codice C# moderno.
Di seguito sono elencate le collezioni generiche piรน comuni:
- Lista : Una lista ridimensionabile basata su indice, che rappresenta il sostituto generico di ArrayList.
- Dizionario : Memorizza coppie chiave-valore con ricerche rapide basate su hash.
- HashSet : Contiene solo valori univoci e supporta operazioni sugli insiemi come l'unione.
- Coda : Una collezione "primo entrato, primo uscito", la versione generica di Queue.
- Pila : Una collezione LIFO (Last In First Out), la versione generica di Stack.
- Elenco ordinato : Mantiene le coppie chiave-valore ordinate per chiave in ordine crescente.
Esempio di collezione List in C#
La List รจ la collezione generica piรน utilizzata perchรฉ si comporta come un array dinamico. L'esempio seguente crea una lista di stringhe, aggiunge e rimuove elementi, ne legge la dimensione e infine stampa i valori rimanenti. Tutto il codice รจ scritto nel file Program.cs.
Passo 1) Importa lo spazio dei nomi System.Collections.Generic e dichiara un elenco di stringhe.
Passo 2) Aggiungi elementi con il metodo Add ed eliminane uno con il metodo Remove.
Passo 3) Leggi la proprietร Count, quindi scorri l'elenco con un'istruzione foreach.
using System; using System.Collections.Generic; namespace DemoApplication { class Program { static void Main(string[] args) { List<string> tutorials = new List<string>(); tutorials.Add("Java"); tutorials.Add("Python"); tutorials.Add("Kotlin"); tutorials.Remove("Python"); Console.WriteLine(tutorials.Count); foreach (string tutorial in tutorials) { Console.WriteLine(tutorial); } Console.ReadKey(); } } }
Code Spiegazione:-
- Lo spazio dei nomi System.Collections.Generic viene importato in modo che il tipo List sia disponibile per il programma.
- Una nuova lista Viene creato un oggetto chiamato tutorials e con il metodo Add vengono aggiunti tre nomi.
- Il metodo Remove elimina il valore โPython", il che lascia due elementi nell'elenco.
- La proprietร Count restituisce il numero di elementi e il ciclo foreach stampa ciascun valore rimanente in ordine.
Quando il programma viene eseguito, stampa prima il conteggio di 2, seguita da Java and Kotlin su righe separate. Questo mostra come una collezione modifichi le sue dimensioni in fase di esecuzione, cosa che un array a dimensione fissa non puรฒ fare.
Differenza tra array e collezioni in C#
Sia un schieramento e una raccolta di elementi correlati sotto un unico nome, ma che si comportano in modo diverso una volta che il programma รจ in esecuzione. Sapere quando usare l'uno o l'altro aiuta a scrivere codice piรน pulito ed efficiente.
Le principali differenze sono elencate di seguito:
- Dimensioni: Un array ha una lunghezza fissa impostata al momento della dichiarazione, mentre una collezione puรฒ espandersi o ridursi in qualsiasi momento.
- Gestione dei tipi: Un array memorizza un singolo tipo, mentre una collezione puรฒ essere sicura dal punto di vista dei tipi grazie ai generici oppure contenere oggetti di tipi misti quando non sono generici.
- Sede: Gli array sono integrati nel linguaggio, mentre le classi di collezioni risiedono negli spazi dei nomi System.Collections e System.Collections.Generic.
- Operazioni integrate: Le collezioni offrono metodi immediati per aggiungere, rimuovere, cercare e ordinare elementi, mentre gli array forniscono solo un accesso indicizzato di base.
- ultimi utilizzi: Scegli un array quando il numero di elementi รจ noto e fisso, e una collezione quando il conteggio cambia durante l'esecuzione del programma.
In sintesi, gli array sono ideali per dati di dimensioni fisse, mentre le collezioni offrono la flessibilitร necessaria alla maggior parte delle applicazioni reali.
