2009-06-24 8 views
121

Est-ce que quelqu'un sait si je peux insérer des valeurs dans un dictionnaire C# quand je le crée? Je peux, mais ne veulent pas, faire dict.Add(int, "string") pour chaque élément s'il y a quelque chose de plus efficace comme:Comment insérer des valeurs dans le dictionnaire C# à l'instanciation?

Dictionary<int, string>(){(0, "string"),(1,"string2"),(2,"string3")}; 
+1

double possible de [Puis-je utiliser un initialiseur de collection pour Dictionnaire entries?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

Répondre

152

Il y a page entière sur la façon de le faire ici:

http://msdn.microsoft.com/en-us/library/bb531208.aspx

exemple:

Dans l'exemple de code suivant, un Dictionary<TKey, TValue> est initialisés avec les instances de type StudentName:

var students = new Dictionary<int, StudentName>() 
{ 
    { 111, new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}}, 
    { 112, new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}}, 
    { 113, new StudentName {FirstName="Andy", LastName="Ruth", ID=198}} 
}; 
+0

Désolé, j'ai utilisé les mauvais termes de recherche sur Google apparemment. Ce lien est génial. – kd7iwp

+3

Cela ne fonctionne que sur le compilateur .NET 3.5 si ... gardez cela à l'esprit. –

+0

@ kd7iwp - aucun problème, une partie de la fonction de ce site est de sorte que les termes de recherche alternatifs peuvent être routés vers quelque chose d'utile. –

44
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
    { 0, "string" }, 
    { 1, "string2" }, 
    { 2, "string3" } }; 
6

Vous pouvez instancier un dictionnaire et ajouter des éléments comme çà:

var dictionary = new Dictionary<int, string> 
    { 
     {0, "string"}, 
     {1, "string2"}, 
     {2, "string3"} 
    }; 
11

Vous avez été presque là:

var dict = new Dictionary<int, string>() 
{ {0, "string"}, {1,"string2"},{2,"string3"}}; 
8

Vous pouvez également utiliser Expressions lambda pour insérer des paires de valeurs clés à partir de n'importe quel autre objet IEnumerable. La clé et la valeur peuvent être n'importe quel type que vous voulez.

Dictionary<int, string> newDictionary = 
       SomeList.ToDictionary(k => k.ID, v => v.Name); 

Je trouve que beaucoup plus simple puisque vous utilisez les objets IEnumerable partout dans .NET

Espoir qui aide !!!

Tad.

0

Espérons que cela fonctionnera parfaitement.

Dictionary<string, double> D =new Dictionary<string, double>(); D.Add("String", 17.00);

+0

Salut, bienvenue à SO! La personne qui a initialement posé cette question a spécifiquement dit qu'elle ne voulait pas faire la méthode '.Add (int," string ")' d'ajout de valeurs à un dictionnaire. Désolé mais cela ne répond pas à la question. – Kezz101

+0

Oui, vous avez raison Kezz101. Mon erreur. –

4

Juste pour que vous sachiez que 6 C#, vous pouvez maintenant l'initialiser comme suit

var students = new Dictionary<int, StudentName>() 
{ 
    [111] = new StudentName {FirstName="Sachin", LastName="Karnik", ID=211}, 
    [112] = new StudentName {FirstName="Dina", LastName="Salimzianova", ID=317}, 
    [113] = new StudentName {FirstName="Andy", LastName="Ruth", ID=198} 
}; 

beaucoup plus propre :)

Questions connexes