Чи можу я використовувати ініціалізатори колекції з 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.