Dapatkah saya menggunakan penginisialisasi koleksi dengan NameValueCollection?


92

Apakah ada cara untuk menginisialisasi NVC menggunakan sintaks penginisialisasi C # collection:

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

Terima kasih

Jawaban:


139

Iya; hanya menggunakan tanda kurung bukan tanda kurung.

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

Anda dapat memanggil Addmetode dengan kumpulan parameter arbitrer menggunakan sintaks.


Terima kasih atas balasan cepatnya!
gap

Halaman MSDN pada Objek dan Inisialisasi Koleksi menguraikan dengan tepat mengapa NameValueCollectionmenerima sintaks ini: msdn.microsoft.com/en-us/library/bb384062.aspx
user7116

3
@six: Sebenarnya, sintaks ini bahkan tidak disebutkan.
SLaks

4
Tangkapan bagus, tampaknya terkubur di halaman untuk Dictionary<K,V>inisialisasi, "atau koleksi apa pun yang metode Tambahkannya mengambil beberapa parameter," msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Anda dapat menggunakan penginisialisasi koleksi dengan semua yang memiliki Addmetode. Ya, bebek mengetik. Jika Addmemiliki lebih dari 1 param, taruh tupel dalam tanda kurung kurawal:

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

3
Tidak terlalu; itu harus diimplementasikan IEnumerable.
SLaks

3
Implements System.Collections.IEnumerableAND memiliki Addmetode yang mengambil setidaknya 1 argumen.
pengguna7116

1
@SLaks ya, saya lupa tentang itu. Btw itu persyaratan yang agak aneh, karena konstruksi ini tidak menggunakan metode IEnumerable.
Andrey

1
Karena kelas basis NameObjectCollectionBaseyang menggunakan IEnumerable. Ini adalah pelajaran bagi saya sebelumnya jika Anda ingin memeriksa implementasi apa yang digunakan pastikan Anda memeriksa semua jenis dasar hingga System.Object.
CallMeLaNN
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.