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

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

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

12

Anda hampir sampai:

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

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.


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

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 :)


-1

Semoga ini akan bekerja dengan sempurna.

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


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"];
}
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.