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!
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:
- Memorizzare più elementi in una singola variabile
- Aggiungere o rimuovere elementi facilmente
- Cercare e ordinare i nostri dati
- 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:
- Creiamo una nuova List di stringhe
- Aggiungiamo tre frutti alla nostra lista
- Stampiamo il numero di frutti (utilizzando la proprietà
Count
) - 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:
- Creiamo un Dictionary con chiavi e valori di stringa
- Aggiungiamo tre coppie frutto-colore
- Accediamo a un colore usando la sua chiave di frutto
- 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:
- Creiamo una Queue di stringhe
- Aggiungiamo (Enqueue) tre elementi alla coda
- Rimuoviamo (Dequeue) il primo elemento
- 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:
- Creiamo una Stack di stringhe
- Pushiamo tre azioni sulla stack
- Diamo un'occhiata all'elemento in alto
- 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