Posso usare gli inizializzatori di raccolta con NameValueCollection?


92

C'è un modo per inizializzare un NVC utilizzando la sintassi dell'inizializzatore di raccolta C #:

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

Grazie

Risposte:


137

Sì; usa solo le parentesi graffe invece delle parentesi.

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

È possibile chiamare Addmetodi con set arbitrari di parametri utilizzando la sintassi.


Grazie per le risposte rapide!
gap

La pagina di MSDN su oggetti e Collezione inizializzazione delinea esattamente il motivo per cui NameValueCollectionaccetta questa sintassi: msdn.microsoft.com/en-us/library/bb384062.aspx
user7116

3
@six: In realtà, non menziona nemmeno questa sintassi.
SLaks

4
Buona cattura, sembra di essere sepolto nella pagina per Dictionary<K,V>l'inizializzazione "o qualsiasi raccolta il cui metodo Add accetta più parametri," msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Puoi usare gli inizializzatori di raccolta con tutto ciò che ha Addmetodo. Sì, dattilografia. Se Addha più di 1 parametro metti le tuple tra parentesi graffe:

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

3
Non proprio; deve attuare IEnumerable.
SLaks

3
Implementa System.Collections.IEnumerableAND ha un Addmetodo che accetta almeno 1 argomento.
user7116

1
@ SLaks sì, me ne sono dimenticato. A proposito è un requisito piuttosto strano, perché questa costruzione non utilizza i metodi di IEnumerable.
Andrey

1
Perché la classe base NameObjectCollectionBaseche utilizza IEnumerable. È una lezione per me prima, se vuoi controllare quale è stata l'implementazione utilizzata assicurati di controllare tutto il tipo di base fino a System.Object.
CallMeLaNN
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.