Могу ли я использовать инициализаторы коллекций с NameValueCollection?


92

Есть ли способ инициализировать NVC с использованием синтаксиса инициализатора коллекции C #:

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

Благодарность

Ответы:


139

Да; просто использует фигурные скобки вместо круглых.

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

Вы можете вызывать Addметоды с произвольными наборами параметров, используя синтаксис.


Спасибо за быстрые ответы!
разрыв

На странице MSDN по инициализации объектов и коллекций точно указано , почему используется NameValueCollectionэтот синтаксис: msdn.microsoft.com/en-us/library/bb384062.aspx
user7116,

3
@six: На самом деле, он даже не упоминает этот синтаксис.
SLaks

4
Хорошая уловка, похоже, что она спрятана на странице для Dictionary<K,V>инициализации »или любой коллекции, метод Add которой принимает несколько параметров,» msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Вы можете использовать инициализаторы коллекции со всем, что имеет Addметод. Да, утка печатает. Если Addу вас более 1 параметра, поместите кортежи в фигурные скобки:

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

3
Не совсем; это необходимо реализовать IEnumerable.
SLaks

3
Реализует System.Collections.IEnumerableAND имеет Addметод, принимающий по крайней мере 1 аргумент.
user7116

1
@SLaks да, я забыл об этом. Кстати, это довольно странное требование, потому что эта конструкция не использует методы IEnumerable.
Андрей

1
Поскольку базовый класс, NameObjectCollectionBaseкоторый использует IEnumerable. Это урок для меня раньше, если вы хотите проверить, какая реализация использовалась, убедитесь, что вы проверили все базовые типы до System.Object.
CallMeLaNN
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.