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.