2009-06-24 8 views
121

Czy ktoś wie, czy istnieje sposób, w jaki mogę wstawić wartości do słownika C# podczas tworzenia? Mogę, ale nie chce, zrobić dict.Add(int, "string") dla każdej pozycji, czy istnieje coś bardziej efektywne jak:Jak wstawić wartości do słownika C# w instancji?

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

możliwe duplikat [Czy mogę użyć inicjator zbiórki Słownik wpisy?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue- centries) –

Odpowiedz

152

Istnieje cała strona o tym, jak to zrobić tutaj:

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

przykład:

W poniższym przykładzie, A Dictionary<TKey, TValue> jest inicjowany przypadkach typu 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

Przepraszamy, użyłem niewłaściwych wyszukiwanych słów na Google najwyraźniej. Ten link jest świetny. – kd7iwp

+3

Działa to tylko na kompilatorze .NET 3.5 ... ale miej to na uwadze. –

+0

@ kd7iwp - nie ma problemu, część funkcji tej strony polega na tym, że alternatywne terminy wyszukiwania mogą zostać przekierowane do czegoś użytecznego. –

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

Można instancję słownika i dodawać elementy do niego tak:

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

Byłaś prawie tam:

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

Można również użyć Wyrażenia Lambda do wstawiania par Key Value z dowolnego innego obiektu IEnumerable. Klucz i wartość mogą być dowolnymi typami.

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

uważam, że o wiele prostsze od korzystania z obiektów IEnumerable wszędzie w .NET

nadzieję, że pomoże !!!

Tad.

0

Mam nadzieję, że będzie idealnie działać.

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

+0

Witam, witam w SO! Osoba, która pierwotnie zadała to pytanie, powiedziała konkretnie, że nie chce wykonywać metody dodawania wartości do słownika .Add (int, "string"). Przepraszamy, ale to nie odpowiada na pytanie. – Kezz101

+0

Tak, masz rację Kezz101. Mój błąd. –

4

Tak wiesz jak z C# 6 można teraz zainicjować w następujący sposób

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} 
}; 

Znacznie czystszy :)

Powiązane problemy