Tại sao là nó có thể khởi tạo một Dictionary<T1,T2>
như thế này:Cách tạo công việc khởi tạo mảng nội tuyến như ví dụ: Khởi tạo từ điển?
var dict = new Dictionary<string,int>() {
{ "key1", 1 },
{ "key2", 2 }
};
... nhưng không thể khởi tạo, chẳng hạn, một mảng của các đối tượng trong KeyValuePair<T1,T2>
chính xác theo cùng một cách:
var kvps = new KeyValuePair<string,int>[] {
{ "key1", 1 },
{ "key2", 2 }
};
// compiler error: "Array initializers can only be used in a variable
// or field initializer. Try using a new expression instead."
Tôi nhận ra tôi có thể làm ví dụ thứ hai bằng cách chỉ viết new KeyValuePair<string,int>() { "key1", 1 }
, v.v. cho mỗi mục. Nhưng tôi tự hỏi nếu nó có thể sử dụng cùng một loại cú pháp ngắn gọn có thể trong ví dụ đầu tiên.
Nếu không thể, điều gì làm cho loại từ điển trở nên đặc biệt?
Tôi thích câu hỏi này sẽ diễn ra ở đâu, nhưng có vẻ như chưa tinh chỉnh. Tôi thích ý tưởng tập trung vào 'List' so với' Dictionary' (để loại bỏ mảng Array), mặc dù thông báo lỗi có thể khác? (Musing: Làm thế nào để biết làm thế nào để tạo ra một KVP từ '{a, b}'? ;-) –
(Tôi không nghĩ rằng tôi đã nhận được danh hiệu khá đúng, mặc dù.) –
@pst có, tôi nghĩ rằng bạn ' trở nên gần gũi hơn với cốt lõi của những gì tôi đang yêu cầu. Tôi không giỏi viết câu hỏi ... – McGarnagle