Чи можу я використовувати ініціалізатори колекції з NameValueCollection?


92

Чи є спосіб ініціалізувати NVC за допомогою синтаксису ініціалізатора колекції C #:

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

Дякую

Відповіді:


137

Так; просто використовує фігурні дужки замість дужок.

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

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


Дякуємо за швидкі відповіді!
розрив

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

3
@six: Насправді в цьому синтаксисі навіть не згадується.
Слакс

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

8

Ви можете використовувати ініціалізатори колекції з усім, що має Addметод. Так, качка набирає. Якщо у Addвас більше 1 параметра, покладіть кортежі в фігурні браслети:

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

3
Не зовсім; він повинен реалізувати IEnumerable.
Слакс

3
Реалізує System.Collections.IEnumerableІ має Addметод, що приймає принаймні 1 аргумент.
user7116

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

1
Тому що базовий клас, NameObjectCollectionBaseякий використовує IEnumerable. Це урок для мене раніше, якщо ви хочете перевірити, яка була реалізація, переконайтеся, що ви перевіряєте всі базові типи до System.Object.
CallMeLaNN
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.