Freigeben über


Astuce: faciliter la lecture des données d'un dictionnaire grâce à une méthode d'extension

Une petite pour la route: j'en avais vraiment marre de tester à chaque fois .ContainsKey() depuis un dictionnaire avant de lire une valeur.

 Dictionary<string, string> dico;
if (dico.ContainsKey("key"))
    value = dico["key"];
else
    value = "default";

Une petite méthode d'extension de C# 3.0 d'une simplicité incroyable permet de régler ça facilement:

 public static class MyExtensions
{
    public static TValue GetValue<TKey, TValue>(
        this IDictionary<TKey, TValue> source,
        TKey key, TValue defaultValue)
    {
        if (source.ContainsKey(key))
            return source[key];
        else
            return defaultValue;
    }
}

L'appel depuis n'importe quel dictionnaire devient évidemment très simple !!!

 value = dico.GetValue("key", "default"); Parfois, on se demande juste comment on y avait pas pensé avant...

Comments

  • Anonymous
    May 07, 2008
    Tiens, en parlant de dictionnaire, aurais-tu une astuce pour utiliser null en tant que clé ? Dictionary<TKey,TValue> et Hashtable ne le permettent pas.

  • Anonymous
    May 07, 2008
    Pour ça il y a la méthode TryGetValue, qui en plus, a le mérite d'éviter un double lookup (ContainsKey + get_Item).

  • Anonymous
    May 09, 2008
    The comment has been removed