Je me retrouve souvent à utiliser le motif actuel dans mon code de nos jours
var dictionnaire = new Dictionary>();
// Ajouter des éléments au dictionnaire
var autreChose = dictionnaire.ContainsKey(clé) ? dictionnaire[clé] : new List();
// Faire des choses avec la variable autreChose
Ou parfois
var dictionnaire = new Dictionary>();
// Ajouter des éléments au dictionnaire
IList autreChose;
if (!dictionnaire.TryGetValue(clé, out autreChose)) {
autreChose = new List();
}
Ces deux façons semblent un peu détournées. Ce que je voudrais vraiment, c'est quelque chose comme
dictionnaire.GetValueOrDefault(clé)
Maintenant, je pourrais écrire une méthode d'extension pour la classe de dictionnaire qui le fait pour moi, mais je me suis dit que je pourrais passer à côté de quelque chose qui existe déjà. Alors, y a-t-il un moyen de faire cela d'une manière qui soit plus "agréable à regarder" sans écrire de méthode d'extension pour le dictionnaire?
0 votes
Pas sûr pourquoi toutes les réponses ci-dessous sont si complexes. Il suffit d'utiliser l'opérateur de coalescence :
string valFromDict = someDict["someKey"] ?? "someDefaultVal";
1 votes
@DylanHunt Cela ne fonctionne pas pour les types de valeur. ;)
0 votes
Notez également que l'utilisation de l'opérateur
[]
peut avoir pour effet secondaire non désiré d'ajouter une valeur au dictionnaire si elle n'existe pas.1 votes
Depuis que cette question est toujours en tête lors de recherches sur Google, il est vraiment important que les gens consultent la réponse liée. Cette fonctionnalité existe depuis des années-0-1)).