Bagaimana cara memasukkan nilai ke dalam Kamus C # saat instantiasi?

149

Adakah yang tahu kalau ada cara saya bisa memasukkan nilai ke dalam kamus C # saat saya membuatnya? Saya bisa, tetapi tidak mau, melakukan dict.Add(int, "string")untuk setiap item jika ada sesuatu yang lebih efisien seperti:

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

Jawaban:

199

Ada seluruh halaman tentang cara melakukannya di sini:

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

Contoh:

Dalam contoh kode berikut, a Dictionary<TKey, TValue>diinisialisasi dengan contoh tipe 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}}
};
Daniel Earwicker
sumber
3
Ini hanya bekerja pada kompiler .NET 3.5 ... hanya perlu diingat.
Adrian Godong
@ kd7iwp - tidak masalah, bagian dari fungsi situs ini adalah agar istilah pencarian alternatif dapat dialihkan ke sesuatu yang bermanfaat.
Daniel Earwicker
Ya, itu cukup banyak dengan Microsoft. Mereka telah berkomitmen untuk kompatibilitas ke belakang selama bertahun-tahun.
PRMan
46
Dictionary<int, string> dictionary = new Dictionary<int, string> { 
   { 0, "string" }, 
   { 1, "string2" }, 
   { 2, "string3" } };
Timothy Carter
sumber
12

Anda hampir sampai:

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

Anda juga dapat menggunakan ekspresi Lambda untuk menyisipkan pasangan Nilai Kunci dari objek IEnumerable lainnya. Kunci dan nilai dapat berupa jenis apa pun yang Anda inginkan.

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

Saya menemukan bahwa jauh lebih sederhana karena Anda menggunakan objek IEnumerable di mana-mana di .NET

Semoga itu bisa membantu !!!

Tad.

matendie
sumber
7

Anda dapat membuat instantiate kamus dan menambahkan item ke dalamnya seperti ini:

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

Agar Anda tahu pada C # 6 Anda sekarang dapat menginisialisasi sebagai berikut

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

Jauh lebih bersih :)

russelrillema
sumber
-1

Semoga ini akan bekerja dengan sempurna.

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


sumber
Hai, selamat datang di SO! Orang yang awalnya mengajukan pertanyaan ini secara khusus mengatakan bahwa mereka tidak ingin melakukan .Add(int, "string")metode menambahkan nilai ke kamus. Maaf tapi ini tidak menjawab pertanyaan.
Kezz101
-2

Ini umumnya tidak disarankan tetapi pada saat krisis tidak pasti yang dapat Anda gunakan

Dictionary<string, object> jsonMock = new Dictionary<string, object>() { { "object a", objA }, { "object b", objB } };

// example of unserializing
ClassForObjectA anotherObjA = null;
if(jsonMock.Contains("object a")) {
    anotherObjA = (ClassForObjA)jsonMock["object a"];
}
Jacksonkr
sumber