วิธีแทรกค่าลงในพจนานุกรม C # เกี่ยวกับการสร้างอินสแตนซ์ได้อย่างไร


149

ไม่มีใครรู้ว่ามีวิธีที่ฉันสามารถแทรกค่าลงในพจนานุกรม C # เมื่อฉันสร้างมันได้หรือไม่ ฉันสามารถ แต่ไม่ต้องการทำ dict.Add(int, "string")สำหรับแต่ละรายการหากมีสิ่งที่มีประสิทธิภาพมากขึ้นเช่น:

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

คำตอบ:


199

มีทั้งหน้าเกี่ยวกับวิธีทำที่นี่:

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

ตัวอย่าง:

ในตัวอย่างโค้ดต่อไปนี้ a Dictionary<TKey, TValue>ถูกเริ่มต้นด้วยอินสแตนซ์ของประเภท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
สิ่งนี้ใช้ได้กับคอมไพเลอร์. NET 3.5 เท่านั้น ... แค่จำไว้
Adrian Godong

@ kd7iwp - ไม่มีปัญหาส่วนหนึ่งของฟังก์ชั่นของเว็บไซต์นี้คือเพื่อให้คำค้นหาทางเลือกสามารถถูกส่งไปยังสิ่งที่มีประโยชน์
Daniel Earwicker

ใช่มันเป็นของ Microsoft พวกเขาค่อนข้างมุ่งมั่นที่จะเข้ากันได้ย้อนหลังในช่วงหลายปีที่ผ่านมา
PRMan



10

คุณสามารถใช้นิพจน์แลมบ์ดาเพื่อแทรกคู่ค่าคีย์จากวัตถุ IEnumerable อื่น ๆ คีย์และค่าสามารถเป็นประเภทใดก็ได้ที่คุณต้องการ

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

ฉันพบว่าง่ายกว่ามากเนื่องจากคุณใช้ IEnumerable objects ทุกแห่งใน. NET

หวังว่าจะช่วย !!!

ตาด


7

คุณสามารถสร้างอินสแตนซ์ของพจนานุกรมและเพิ่มรายการลงในแบบนี้:

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

7

เพื่อให้คุณรู้ตั้งแต่ C # 6 ตอนนี้คุณสามารถเริ่มต้นได้ดังนี้

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

ทำความสะอาดมาก :)


-1

หวังว่ามันจะทำงานได้อย่างสมบูรณ์

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


สวัสดียินดีต้อนรับสู่ SO! บุคคลที่เคยถามคำถามนี้โดยเฉพาะกล่าวว่าพวกเขาไม่ต้องการทำ.Add(int, "string")วิธีการเพิ่มคุณค่าให้กับพจนานุกรม ขออภัยไม่ตอบคำถาม
Kezz101

-2

โดยทั่วไปไม่แนะนำนี้ แต่ในช่วงเวลาของวิกฤตการณ์ที่ไม่แน่นอนคุณสามารถใช้

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"];
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.