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.