Guida per Principianti alle Collections in C

Ciao a tutti, futuri programmatori! Oggi ci imbarcheremo in un viaggio emozionante nel mondo delle collections in C#. Non preoccupatevi se siete nuovi al programming - sarò il vostro guida amichevole, spiegando tutto passo per passo. Immersione!

C# - Collections

Cos'è una Collection?

Immaginate di organizzare una festa e di dover tenere traccia di tutti i vostri ospiti. Potreste scrivere ogni nome su un pezzo di carta separato, ma sarebbe disorderly e inefficace. Invece, probabilmente usereste una lista degli ospiti. In C#, le collections sono come quella lista degli ospiti - ci aiutano a organizzare e gestire gruppi di oggetti correlati.

Perché Usare Collections?

Le collections sono super utili perché ci permettono di:

  1. Memorizzare più elementi in una singola variabile
  2. Aggiungere o rimuovere elementi facilmente
  3. Cercare e ordinare i nostri dati
  4. Eseguire operazioni su gruppi di dati

Ora, esaminiamo alcuni dei tipi di collections più comuni in C#.

Lists: Il Tuo Amico Flessibile

Cos'è una List?

Una List è come un array dinamico che può crescere o restringersi secondo necessità. È perfetta quando non sai esattamente quanti elementi dovrai memorizzare.

Come Usare una List

Creiamo una lista dei nostri frutti preferiti:

List<string> fruits = new List<string>();
fruits.Add("Apple");
fruits.Add("Banana");
fruits.Add("Cherry");

Console.WriteLine($"Abbiamo {fruits.Count} frutti.");
Console.WriteLine($"Il secondo frutto è {fruits[1]}.");

In questo esempio, noi:

  1. Creiamo una nuova List di stringhe
  2. Aggiungiamo tre frutti alla nostra lista
  3. Stampiamo il numero di frutti (utilizzando la proprietà Count)
  4. Accediamo al secondo frutto usando un indice (ricorda, l'indicizzazione parte da 0!)

Output:

Abbiamo 3 frutti.
Il secondo frutto è Banana.

Dictionaries: La Tua Chiave del Successo

Cos'è un Dictionary?

Un Dictionary è come un vero e proprio dizionario - memorizza coppie chiave-valore. Ogni chiave deve essere unica, proprio come ogni parola in un dizionario ha la sua definizione.

Usare un Dictionary

Creiamo un dizionario dei colori dei frutti:

Dictionary<string, string> fruitColors = new Dictionary<string, string>();
fruitColors.Add("Apple", "Red");
fruitColors.Add("Banana", "Yellow");
fruitColors.Add("Grape", "Purple");

Console.WriteLine($"Una mela è {fruitColors["Apple"]}.");

if (fruitColors.ContainsKey("Cherry"))
{
Console.WriteLine($"Un ciliegio è {fruitColors["Cherry"]}.");
}
else
{
Console.WriteLine("Non conosciamo il colore di un ciliegio.");
}

Qui, noi:

  1. Creiamo un Dictionary con chiavi e valori di stringa
  2. Aggiungiamo tre coppie frutto-colore
  3. Accediamo a un colore usando la sua chiave di frutto
  4. Controlliamo se una chiave esiste prima di cercare di accedere al suo valore

Output:

Una mela è Red.
Non conosciamo il colore di un ciliegio.

Queue: Primo Arrivato, Primo Servito

Cos'è una Queue?

Una Queue è come una coda in un supermercato - la prima persona nella coda è la prima persona servita. In termini di programmazione, è una struttura dati "First-In-First-Out" (FIFO).

Queue in Azione

Simuliamo una coda di stampa semplice:

Queue<string> printQueue = new Queue<string>();
printQueue.Enqueue("Report.doc");
printQueue.Enqueue("Picture.jpg");
printQueue.Enqueue("Spreadsheet.xlsx");

Console.WriteLine($"Elementi nella coda: {printQueue.Count}");
Console.WriteLine($"Stammando: {printQueue.Dequeue()}");
Console.WriteLine($"Prossimo in coda: {printQueue.Peek()}");
Console.WriteLine($"Elementi rimanenti: {printQueue.Count}");

In questo esempio, noi:

  1. Creiamo una Queue di stringhe
  2. Aggiungiamo (Enqueue) tre elementi alla coda
  3. Rimuoviamo (Dequeue) il primo elemento
  4. Diamo un'occhiata al prossimo elemento senza rimuoverlo

Output:

Elementi nella coda: 3
Stammando: Report.doc
Prossimo in coda: Picture.jpg
Elementi rimanenti: 2

Stack: Ultimo In, Primo Out

Cos'è una Stack?

Una Stack è come una pila di piatti - aggiungi all'alto e togli dall'alto. È una struttura dati "Last-In-First-Out" (LIFO).

Stacking Up

Usiamo una Stack per tenere traccia delle operazioni di annullamento in un editor di testo:

Stack<string> undoStack = new Stack<string>();
undoStack.Push("Type 'Hello'");
undoStack.Push("Type ' World'");
undoStack.Push("Delete 'World'");

Console.WriteLine($"Operazioni di annullamento: {undoStack.Count}");
Console.WriteLine($"Ultima azione: {undoStack.Peek()}");
Console.WriteLine($"Annullando: {undoStack.Pop()}");
Console.WriteLine($"Operazioni rimanenti: {undoStack.Count}");

Qui, noi:

  1. Creiamo una Stack di stringhe
  2. Pushiamo tre azioni sulla stack
  3. Diamo un'occhiata all'elemento in alto
  4. Pop (rimuoviamo e restituiamo) l'elemento in alto

Output:

Operazioni di annullamento: 3
Ultima azione: Delete 'World'
Annullando: Delete 'World'
Operazioni rimanenti: 2

Tabella dei Metodi delle Collections

Ecco una comoda tabella dei metodi comuni per queste collections:

Metodo List Dictionary Queue Stack
Add - -
Remove - -
Clear
Contains ✓ (ContainsKey)
Count
Enqueue - - -
Dequeue - - -
Push - - -
Pop - - -
Peek - -

Conclusione

Congratulazioni! Avete appena fatto i vostri primi passi nel mondo delle collections in C#. Ricorda, ogni tipo di collection ha i suoi punti di forza, e scegliere quella giusta può rendere il tuo codice più efficiente e più facile da leggere.

Continuando il vostro viaggio nel programming, scoprirete sempre più modi di usare queste collections. Non abbiate paura di sperimentare - è così che noi tutti impariamo e cresciamo come sviluppatori.

Buon coding, e possa le vostre collections essere sempre ben organizzate!

Credits: Image by storyset