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.