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