Un dizionario è una raccolta di dati (Collection) formata da una serie di chiavi e valori. Un oggetto di tipo Dictionary può contenere un qualsiasi numero di elementi, purché siano dello stesso tipo.

Per creare dizionari contenenti dati di tipo diverso utilizzare la classe Hashtable.

Usare la classe Dictionary<>

Per prima cosa includere la classe Generic all’interno della propria classe.

using System.Collections.Generic;

Creare il dizionario indicando il tipo della chiave, nell’esempio string, e il tipo del valore, nell’esempio int.

Dictionary<string, int> dict = new Dictionary<string, int>();

Aggiungere gli elementi con il metodo .Add() indicando la chiave e il valore come argomenti.

dict.Add("a", 10);
dict.Add("b", 20);
dict.Add("c", 30);

Per accedere a un singolo valore indicare la chiave associata dopo il nome del dizionario, come mostrato nel seguente esempio .

Response.Write("a: " + dict["a"] + "<br>");

Accedere a tutti gli elementi di un oggetto Dictionary

Per accedere a tutti gli elementi del dizionario (chiave, valore) usare un ciclo foreach.

foreach (KeyValuePair<string, int> i in dict){
 Response.Write(i.ToString() + " ");
}

In questo esempio, i valori stampati (cioè, il contenuto della variabile i) sono le singole coppie (chiave, valore) che formano il dizionario.

Per accedere solo alle chiavi presenti nel dizionario usare la proprietà .Keys, che restituisce la collezione di chiavi.

foreach (string i in dict.Keys){
 Response.Write(i.ToString() + " ");
}

Invece, per accedere ai valori usare la proprietà .Values, che restituisce la raccolta di valori presenti nel dizionario.

foreach (int i in dict.Values)
 Response.Write(i.ToString() + " ");
}

Le proprietà .Keys e .Values restituiscono, rispettivamente, le chiavi e i valori in una Collection di tipo KeyCollection e ValueCollection.

In alcuni casi può essere utile recuperare tutte le chiavi o i valori e poi, percorrerli con un ciclo.

Dictionary in C sharp

Dictionary in C sharp

I metodi e le proprietà degli oggetti Dictionary

Gli oggetti Dictionary dispongono di numerosi metodi e proprietà. Vediamo quali sono quelli più utili. Il metodo .Remove() rimuove l’elemento che corrisponde alla chiave indicata come argomento.

dict.Remove("c"); //30

Per cercare una chiave all’interno del dizionario usare il metodo .ContainsKey(), che restituirà True, se la chiave indicata come argomento è presente nel dizionario. Per cercare un valore usare il metodo .ContainsValue().

Response.Write(dict.ContainsKey("a")); // True
Response.Write(dict.ContainsValue(20)); // True

Il metodo .TryGetValue() cerca una chiave nel dizionario e, se esiste, ne restituisce il valore nella variabile indicata come secondo argomento.

if (dict.TryGetValue("q", out value))
{
 Response.Write(System.String.Format("\"q\", valore = {0}.", value));
}else{
 Response.Write("Nessun valore trovato per la chiave q");
}

Per una lista completa dei metodi e delle proprietà della classe Dictionary consultare la guida in linea di Visual Studio (F1) o la versione online.