Làm cách nào để chèn giá trị vào Từ điển C # khi khởi tạo?


149

Có ai biết có cách nào để tôi có thể chèn giá trị vào Từ điển C # khi tôi tạo không? Tôi có thể, nhưng không muốn, làm dict.Add(int, "string")cho từng mục nếu có thứ gì đó hiệu quả hơn như:

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

Câu trả lời:


199

Có toàn bộ trang về cách làm điều đó ở đây:

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

Thí dụ:

Trong ví dụ mã sau, a Dictionary<TKey, TValue>được khởi tạo với các thể hiện của loại 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
Điều này chỉ hoạt động trên trình biên dịch .NET 3.5 mặc dù ... chỉ cần ghi nhớ điều đó.
Adrian Godong

@ kd7iwp - không có vấn đề gì, một phần chức năng của trang web này là để các thuật ngữ tìm kiếm thay thế có thể được chuyển đến một cái gì đó hữu ích.
Daniel Earwicker

Vâng, đó là khá nhiều cho Microsoft. Họ đã cam kết tương thích ngược trong những năm qua.
PRman

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

12

Bạn đã gần như ở đó:

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

10

Bạn cũng có thể sử dụng biểu thức Lambda để chèn bất kỳ cặp Giá trị khóa nào từ bất kỳ đối tượng IEnumerable nào khác. Khóa và giá trị có thể là bất kỳ loại nào bạn muốn.

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

Tôi thấy điều đó đơn giản hơn nhiều vì bạn sử dụng các đối tượng IEnumerable ở mọi nơi trong .NET

Mong rằng sẽ giúp !!!

Tad.


7

Bạn có thể khởi tạo một từ điển và thêm các mục vào đó như thế này:

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

7

Để bạn biết kể từ C # 6, bây giờ bạn có thể khởi tạo nó như sau

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

Sạch sẽ hơn nhiều :)


-1

Hy vọng nó sẽ hoạt động hoàn hảo.

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


Xin chào, chào mừng bạn đến với SO! Người ban đầu hỏi câu hỏi này nói cụ thể rằng họ không muốn thực hiện .Add(int, "string")phương pháp thêm giá trị vào từ điển. Xin lỗi nhưng điều này không trả lời câu hỏi.
Kezz101 15/03/2015

-2

Điều này thường không được khuyến nghị nhưng trong thời gian khủng hoảng không chắc chắn, bạn có thể sử dụng

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"];
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.