Sobes.tech
Junior

Cos'è un dizionario in C#?

sobes.tech AI

Risposta dell'AI

Il dizionario (Dictionary) in C# è una raccolta che memorizza coppie di "chiave-valore", dove ogni chiave è unica e viene utilizzata per un accesso rapido al valore corrispondente. Implementa le interfacce IDictionary<TKey, TValue>, ICollection<KeyValuePair<TKey, TValue>>, IEnumerable<KeyValuePair<TKey, TValue>>, IEnumerable. È basato su una tabella hash.

Caratteristiche principali:

  • Non ordinato: L'ordine degli elementi nel dizionario non è garantito e può cambiare durante l'aggiunta/rimozione.
  • Prestazioni: Le operazioni di aggiunta, rimozione e ricerca per chiave hanno una complessità media di O(1) (nel caso ideale, senza collisioni di hash) e O(n) nel peggiore dei casi.
  • Unicità delle chiavi: Ogni chiave deve essere unica nel dizionario. Tentare di aggiungere un elemento con una chiave esistente provocherà un'eccezione.

Esempio di utilizzo:

// Creazione di un dizionario
Dictionary<string, int> studenti = new Dictionary<string, int>();

// Aggiunta di elementi
studenti.Add("Ivanov", 5);
studenti["Petrov"] = 4; // Metodo alternativo di aggiunta/aggiornamento

// Verifica se una chiave esiste
if (studenti.ContainsKey("Ivanov"))
{
    // Ottenere il valore tramite la chiave
    int voto = studenti["Ivanov"]; // voto == 5
}

// Iterare sugli elementi
foreach (KeyValuePair<string, int> studente in studenti)
{
    // studente.Key - chiave, studente.Value - valore
    Console.WriteLine($"{studente.Key}: {studente.Value}");
}

// Rimuovere un elemento
studenti.Remove("Petrov");

Confronto con altre collezioni:

Collezione Scopo principale Accesso tramite indice Accesso tramite chiave Unicità delle chiavi Ordinamento
List<T> Sequenza di elementi No No
HashSet<T> Insieme di elementi unici No No No
Dictionary<TKey, TValue> Coppie chiave-valore per ricerca rapida No No