2009-05-08 34 views
47

C# có cho phép các hashtables được điền trong các biểu thức một dòng không? Tôi đang nghĩ về điều gì đó tương đương với Python bên dưới:Cách ngắn gọn nhất để khởi tạo C# hashtable

mydict = {"a": 23, "b": 45, "c": 67, "d": 89} 

Nói cách khác, có cách nào khác để đặt từng cặp khóa-giá trị trong một biểu thức riêng biệt?

Trả lời

73

C# 3 có phần mở rộng ngôn ngữ được gọi là bộ khởi tạo bộ sưu tập cho phép bạn khởi tạo giá trị của tập hợp trong một câu lệnh.

Dưới đây là một ví dụ sử dụng một Dictionary<,>:

using System; 
using System.Collections.Generic; 

class Program 
{ 
    static void Main() 
    { 
     var dict = new Dictionary<string, int> 
     { 
      {"a", 23}, {"b", 45}, {"c", 67}, {"d", 89} 
     }; 
    } 
} 

mở rộng ngôn ngữ này được hỗ trợ bởi trình biên dịch C# 3 và định dạng nào mà thực hiện IEnumerable và có một Add phương pháp công cộng.

Nếu bạn quan tâm tôi sẽ đề nghị bạn đọc this question I asked here on StackOverflow như tại sao C# đội thực hiện phần mở rộng ngôn ngữ này một cách tò mò như vậy (khi bạn đọc câu trả lời tuyệt vời cho câu hỏi bạn sẽ thấy rằng nó làm cho rất nhiều giác quan).

+1

Có cú pháp tương tự để xác định từ điển có nhiều cấp độ sâu không? Ví dụ, 'Dictionary >'? –

+0

Tôi đã tìm thấy kỹ thuật này và sẽ thêm nó như là một chỉnh sửa cho câu trả lời của bạn, mặc dù nó hơi dài dòng, không chắc liệu nó có tiết kiệm được nhiều thời gian không. –

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