C# Classe Dictionary

dic 19th, 2009 | Filed under .NET, C#, Snippet

Link sponsorizzati

Per chi conosce già linguaggi come il PHP, sa che esistono degli oggetti detti array associativi. In un array associativo gli indici non venogno impostati di defaul dal linguaggio (che normalmente corrispondono alla posizione del valore all’interno dell’array) ma bensì viene impostato manualmente dal programmatore.

Una cosa simile è possibile usarla anche in non puramente interpretati, come il C#. La classe Dictionary infatti è sviluppata proprio per questo scopo. Ogni valore aggiunto al dizionario, è costituito da una chiave e un valore. La chiave ha il compito di individuare univocamente il valore a cui corrisponde. Questo significa che non possono esistere due elementi nel dizionario che hanno la stessa chiave. Infatti, nel caso in cui si tentasse di fare una cosa simile, viene sollevata un’eccezione in fase di esecuzione del codice.

Link sponsorizzati

Dictionary<string , string> dc = new Dictionary</string><string , string>();
dc.Add("Chiave", "Valore");

Console.WriteLine(dc["Chiave"]);
</string>

Questo è un esempio di come si crea un’oggetto di questo tipo. Essendo una classe generica è stata costruita per accettare qualsiasi tipo di dato, difatti, come vedete, durante la creazione dell’oggetto si definisce anche il tipo che corrisponde alla chiave e quello che invece corrisponde al valore.

Dictionary<string , int> dc = new Dictionary</string><string , int>();
dc.Add("Uno", 1);
dc.Add("Due", 2);
dc.Add("Tre", 3);

foreach (var item in dc)
{
    Console.WriteLine(item.Key + " => " + item.Value);
}
//il singolo elemento può essere richiamato
//con la chiave, ad esempio dc["Uno"] restituirà 1.
</string>

Ovviamente, come dicevo prima, se si tenta di aggiungere un elmento che ha una chiave già definita in precedenza si riceve un’eccezione. La stessa cosa vale quando si cerca di farsi restituire un elemento che ha una chiave che non appartiene a quel dizionario. Ad esempio, in questo caso, se si facesse dc["Quattro"] otterremmo un’eccezione.

Questo lo snippet completo

    class Program
    {
        static void Main(string[] args)
        {
            Dictionary<string , int> dc = new Dictionary</string><string , int>();
            dc.Add("Uno", 1);
            dc.Add("Due", 2);
            dc.Add("Tre", 3);

            foreach (var item in dc)
            {
                Console.WriteLine(item.Key + " => " + item.Value);
            }
            try
            {
                int v = dc["quattro"];
            }
            catch
            {
                Console.WriteLine("Chiave non presente nel dizionario");
            }

            try
            {
                dc.Add("Uno", 4);
            }
            catch
            {
                Console.WriteLine("Chiave già presente nel dizionario");
            }
            Console.ReadKey();
        }
    }
</string>

Lo stesso codice è facilmente convertibile in Vb.NET

Link sponsorizzati

Condividi l'articolo

Post correlati:

Tags: , ,
  1. Malex
    dic 19th, 2009 at 17:08

    2 cose non strettamente legate all’articolo:
    1) “ma bensì” non è sintatticamente corretto
    2) nella home, nell’articolo si vedono due ; evidentemente viene interpretato come tag e chiuso automaticamente

  2. Malex
    dic 19th, 2009 at 17:08

    e per l’appunto, i tag sono spariti anche nel commento: </string>

  3. codesnippet
    dic 19th, 2009 at 17:17

    Ho capito di cosa parli, è un’errore del plugin. Sto parlando con l’autore per risolvere.