Tôi có thể sử dụng trình khởi tạo bộ sưu tập với NameValueCollection không?


92

Có cách nào để khởi tạo NVC bằng cú pháp khởi tạo bộ sưu tập C # không:

NameValueCollection nvc = new NameValueCollection() { ("a", "1"), ("b", "2") };

Cảm ơn

Câu trả lời:


137

Đúng; chỉ sử dụng dấu ngoặc nhọn thay vì dấu ngoặc đơn.

var nvc = new NameValueCollection { {"a", "1"}, {"b", "2"} };

Bạn có thể gọi Addcác phương thức với các bộ tham số tùy ý bằng cú pháp.


Cảm ơn vì trả lời nhanh chóng!
gap

Trang MSDN trên Đối tượng và Khởi tạo Bộ sưu tập phác thảo chính xác lý do tại sao NameValueCollectionchấp nhận cú pháp này: msdn.microsoft.com/en-us/library/bb384062.aspx
user7116

3
@six: Trên thực tế, nó thậm chí không đề cập đến cú pháp này.
SLaks

4
Bắt tốt, nó dường như bị chôn vùi trong trang để Dictionary<K,V>khởi tạo "hoặc bất kỳ bộ sưu tập nào có phương thức Thêm nhận nhiều tham số", msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Bạn có thể sử dụng bộ khởi tạo bộ sưu tập với mọi thứ có Addphương thức. Ừ, gõ vịt. Nếu Addcó nhiều hơn thì 1 tham số đặt các bộ giá trị trong dấu ngoặc nhọn:

NameValueCollection nvc = new NameValueCollection() { { "a", "1" }, { "b", "2" } };

3
Không hẳn; nó phải thực hiện IEnumerable.
SLaks

3
Triển khai System.Collections.IEnumerableAND có một Addphương thức nhận ít nhất 1 đối số.
user7116,

1
@ Vâng, tôi quên mất nó. Btw, nó là một yêu cầu khá lạ, bởi vì cấu trúc này không sử dụng các phương pháp của IEnumerable.
Andrey

1
Bởi vì lớp cơ sở NameObjectCollectionBasemà sử dụng IEnumerable. Đó là một bài học cho tôi trước đây nếu bạn muốn kiểm tra việc triển khai được sử dụng là gì, hãy đảm bảo bạn kiểm tra tất cả các loại cơ sở cho đến System.Object.
CallMeLaNN vào
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.