.: HosiriS :.

Informatica e non solo

Tips: Prelevare una chiave da un dizionario in C#

Posted by hosiris su novembre 17, 2011

Con questo piccolo tips inauguro una nuova sezione dedicata al C#, linguaggio che ormai da 6 mesi accompagna tutte le mie giornate!
Proveremo a percorrere insieme alcune delle caratteristiche che lo rendono così appetibile per le aziende.

Ma andiamo subito a trattare l’argomento di oggi: i Dizionari.

La classe Dictionary, contenuta nel namespace System.Collections.Generic, rappresenta una collezione di chiavi-valori.
Per poter definire una variabile di questo tipo si dovranno definire i tipi ripsettivi per chiave e valore:

Dictionary myDict = new Dictionary();

Questa struttura ci permette di prelevare un valore specificando una chiave:

string value = myDict[2];

Purtroppo non è vero il contrario, quindi avendo un valore non potremmo capire quale è la chiave associata.
La soluzione è abbastanza semplice e prevede l’uso di un foreach:


int GetKey(Dictionary myDict, string value)
{
    foreach (int item in myDict.Keys)
    {

        if (myDict[item] == value) return item;

    }
    return -1;
}

Come post di benvenuto è molto semplice… alla prossima!

3 Risposte to “Tips: Prelevare una chiave da un dizionario in C#”

  1. […] Tips: Prelevare una chiave da un dizionario in C# ::: HosiriS […]

  2. allanon said

    weeee, mi pare di capire che il c# non tratti molto bene i dizionari, se non prevede metodi per compiere le operazioni piu’ basilari.

    Commenti e paragoni tra c# e python?

    • hosiris said

      Ciao, i dizionari sono trattati molto bene. Dal vecchio metodo usato nel C++ al C# sono stati fatti molti progressi e la libreria ha ottime performance. Non vorrei dire castronerie, ma lo stesso python non ha una funzione che preso un valore ne restituisce la chiave (credo proprio per la logica che sta dietro un dizionario…).
      Il vantaggio che indubbiamente offre python è l’estrema semplicità con cui trattarli e la possibilità di inferire nel dizionario dati eterogenei, il C# rimane un linguaggio tipizzato e quindi con qualche limite. Faccio un esempio di dichiarazione di un dizionario nei due linguaggi:
      C#

      
      Dictionary myDict = new Dictionary();
      myDict.Add('gianni', 28);
      myDict.Add('carlo', 30); //:P
      
      

      Python

      
      myDict = {'gianni':28,'carlo':30}
      
      

      E’ decisamente più lineare il python… ma che dire, qui vogliono le cose in C# e chi paga comanda 😀

Scrivi una risposta a hosiris Cancella risposta