Koleksiyon başlatıcılarını NameValueCollection ile kullanabilir miyim?


92

C # toplama başlatıcı sözdizimini kullanarak bir NVC'yi başlatmanın bir yolu var mı:

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

Teşekkürler

Yanıtlar:


139

Evet; sadece parantez yerine kaşlı ayraç kullanır.

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

AddSözdizimini kullanarak rasgele parametre kümeleriyle yöntemleri çağırabilirsiniz .


Hızlı cevaplar için teşekkürler!
boşluk

Object and Collection Initialization'daki MSDN sayfası, NameValueCollectionbu sözdizimini tam olarak neden kabul
ettiğini açıklar

3
@six: Aslında bu sözdiziminden bahsetmiyor bile.
SLaks

4
İyi yakaladım, Dictionary<K,V>"veya Add yöntemi birden çok parametre alan herhangi bir koleksiyonda" başlatma için sayfaya gömülmüş gibi görünüyor " msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

AddYöntem içeren her şeyle koleksiyon başlatıcıları kullanabilirsiniz . Evet, ördek yazarak. Add1'den fazla param varsa , küme parantezleri küme parantezlerine koyun:

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

3
Pek değil; uygulamak zorundadır IEnumerable.
SLaks

3
AND'yi uygular System.Collections.IEnumerable, Adden az 1 argüman alan bir yönteme sahiptir .
user7116

1
@SLaks evet, unuttum. Btw bu oldukça garip bir gereklilik çünkü bu yapı IEnumerable'ın yöntemlerini kullanmıyor.
Andrey

1
Çünkü NameObjectCollectionBasekullanan temel sınıf IEnumerable. Daha önce benim için bir ders, uygulamanın ne olduğunu kontrol etmek istiyorsanız, tüm temel türleri kontrol ettiğinizden emin olun System.Object.
CallMeLaNN
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.