157 votes

Pourquoi ne pas Dictionnaire ont AddRange?

Le titre est de base assez, pourquoi ne puis-je pas:

Dictionary<string, string> dic = new Dictionary<string, string>();
dic.AddRange(MethodThatReturnAnotherDic());

96voto

Alan Points 21367

La gamme n'a pas vraiment de sens pour un conteneur associatif est-il? Je pense que le Dictionnaire stocke les valeurs dans un triées de la mode, mais ce n'est pas l'apanage de tables de hachage.

De toute façon, avec le C#, vous pouvez écrire votre propre méthode d'extension de fusionner les dictionnaires.

12voto

Gal Points 1258

Ma conjecture est que le manque de bon de sortie à l'utilisateur que pour ce qui s'est passé. Comme vous ne pouvez pas avoir à répéter les clés dans un des dictionnaires, comment voulez-vous gérer la fusion de deux dictionnaire où certaines touches se croisent? Bien sûr, vous pourriez dire: "je n'aime pas", mais c'est la rupture de la convention de renvoyer false / lance une exception pour la répétition des touches.

7voto

Valamas - AUS Points 8359

Vous pouvez faire cela

Dictionary<string, string> dic = new Dictionary<string, string>();
MethodThatReturnAnotherDic(dic);

public void MethodThatReturnAnotherDic(Dictionary<string, string> dic)
{
    dic.Add(.., ..);
}

ou utiliser une Liste pour addrange et/ou à l'aide du modèle ci-dessus.

List<KeyValuePair<string, string>>

1voto

WEFX Points 2942

Si vous êtes de traiter w/ un nouveau Dictionnaire (et vous n'avez pas les lignes existantes à perdre), vous pouvez toujours utiliser ToDictionary() à partir d'une autre liste d'objets.

Donc, dans votre cas, il vous faudrait faire quelque chose comme ceci:

Dictionary<string, string> dic = new Dictionary<string, string>();
dic = SomeList.ToDictionary(x => x.Attribute1, x => x.Attribute2);

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