150 votes

Différentes façons d'ajouter au dictionnaire

Quelle est la différence entre Dictionary.add(key, value) et Dictionary[key] = value ?

J'ai remarqué que la dernière version ne jette pas un ArgumentException lors de l'insertion d'une clé dupliquée, mais y a-t-il une raison de préférer la première version ?

Modifier : Quelqu'un a-t-il une source d'information faisant autorité à ce sujet ? J'ai essayé MSDN, mais c'est comme toujours une chasse à l'oie sauvage :(

91voto

hhravn Points 622

La première version ajoutera une nouvelle KeyValuePair au dictionnaire, en lançant si la clé est déjà dans le dictionnaire. La seconde, utilisant l'indexeur, ajoutera une nouvelle paire si la clé n'existe pas, mais écrasera la valeur de la clé si elle existe déjà dans le dictionnaire.

IDictionary<string, string> strings = new Dictionary<string, string>();

strings["foo"] = "bar";          //strings["foo"] == "bar"
strings["foo"] = string.Empty;   //strings["foo"] == string.empty
strings.Add("foo", "bar");       //throws     

39voto

Michael Damatov Points 5453

Dictionary.Add(key, value) et Dictionary[key] = value ont des finalités différentes :

  • Utilisez la méthode Add pour ajouter une nouvelle paire clé/valeur, les clés existantes ne seront pas remplacées (un ArgumentException est lancé).
  • Utilisez l'index si vous ne vous souciez pas que la clé existe déjà dans le dictionnaire, en d'autres termes : ajoutez la paire clé/valeur si la clé n'est pas dans le dictionnaire ou remplacez la valeur de la clé spécifiée si la clé est déjà dans le dictionnaire.

5voto

Guffa Points 308133

Oui, c'est la différence, la méthode Add lance une exception si la clé existe déjà.

La raison d'utiliser la méthode Add est exactement la suivante. Si le dictionnaire n'est pas censé contenir la clé déjà, vous voulez généralement l'exception afin que vous soyez mis au courant du problème.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X