Örnekleme üzerinde C # Sözlüğü'ne değerler nasıl eklenir?


149

Herkes ben oluştururken bir C # Sözlük değerleri eklemek bir yolu olup olmadığını biliyor mu? dict.Add(int, "string")Gibi daha verimli bir şey varsa, her öğe için yapabilirim, ama yapmak istemiyorum :

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

Yanıtlar:


199

Burada nasıl yapılacağı hakkında tüm sayfa var:

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

Misal:

Aşağıdaki kod örneğinde a Dictionary<TKey, TValue>, tür örnekleri ile başlatılır 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
Bu sadece .NET 3.5 derleyicisi üzerinde çalışıyor olsa da ... bunu aklınızda bulundurun.
Adrian Godong

@ kd7iwp - sorun değil, bu sitenin işlevinin bir kısmı böylece alternatif arama terimleri yararlı bir şeye yönlendirilebilir.
Daniel Earwicker

Evet, bu Microsoft için oldukça önemli. Yıllar boyunca geriye dönük uyumluluk konusunda oldukça kararlılar.
PRMan

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

13

Neredeyse oradaydınız:

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

10

Lambda ifadelerini, diğer IEnumerable nesnelerinden herhangi bir Anahtar Değer çifti eklemek için de kullanabilirsiniz. Anahtar ve değer istediğiniz herhangi bir tür olabilir.

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

.NET'te her yerde IEnumerable nesnelerini kullandığınız için çok daha basit buluyorum

Umarım yardımcı olur!!!

Tad.


7

Bir sözlük başlatabilir ve buna şu şekilde öğeler ekleyebilirsiniz:

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

7

Bildiğiniz gibi C # 6'dan itibaren şu şekilde başlatabilirsiniz

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

Çok daha temiz :)


-1

Umarım mükemmel çalışır.

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


Merhaba, SO'ya hoş geldiniz! Başlangıçta bu soruyu soran kişi özellikle .Add(int, "string")bir sözlüğe değer ekleme yöntemini yapmak istemediklerini söyledi . Üzgünüm ama bu soruya cevap vermiyor.
Kezz101

-2

Bu genellikle tavsiye edilmez, ancak belirsiz kriz zamanlarında kullanabilirsiniz

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"];
}
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.