2009-06-24 34 views
121

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

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

thể trùng lặp của [Tôi có thể sử dụng một initializer bộ sưu tập cho từ điển mục?] (Http://stackoverflow.com/questions/495038/can-i-use-a-collection-initializer-for-dictionarytkey-tvalue-entries) –

Trả lời

152

Có toàn bộ trang về làm thế nào để làm điều đó ở đây:

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

Ví dụ:

Trong ví dụ mã sau, Dictionary<TKey, TValue> là được khởi tạo với trường hợp 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}} 
}; 
+0

Xin lỗi, tôi đã sử dụng cụm từ tìm kiếm sai trên Google rõ ràng. Liên kết này rất tuyệt. – kd7iwp

+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 đó. –

+0

@ kd7iwp - không 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 định tuyến đến một cái gì đó hữu ích. –

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

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

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

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

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

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 rằng đơn giản hơn nhiều kể từ khi bạn sử dụng các đối tượng IEnumerable ở khắp mọi nơi trong .NET

Hy vọng rằng sẽ giúp !!!

Tad.

0

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

+0

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 đặc biệt nói rằng họ không muốn thực hiện phương thức '.Add (int," string ")' để thêm các giá trị vào một từ điển. Xin lỗi nhưng điều này không trả lời câu hỏi. – Kezz101

+0

Có bạn đã đúng Kezz101. Lỗi của tôi. –

4

Chỉ cần để bạn biết như 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} 
}; 

nhiều bụi :)

Các vấn đề liên quan