我可以将集合初始值设定项与NameValueCollection一起使用吗?


92

有没有一种方法可以使用C#集合初始值设定项语法来初始化NVC:

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

谢谢

Answers:


137

是; 只是使用大括号而不是括号。

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

您可以Add使用语法调用带有任意参数集的方法。


感谢您的快速回复!
差距,

MSDN页面上的对象和集合初始化概述了为什么NameValueCollection接受这种语法的确切原因:msdn.microsoft.com/en-us/library/bb384062.aspx
user7116

3
@six:实际上,它甚至没有提到这种语法。
SLaks 2011年

4
很好的收获,它似乎埋藏在页面中进行Dictionary<K,V>初始化,或者“或者其Add方法
带有

8

您可以对具有Add方法的所有对象使用集合初始化器。是的,鸭子打字。如果Add有1个以上的参数,则将元组放在卷曲的bracets中:

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

3
不完全的; 它必须实现IEnumerable
SLaks

3
实现System.Collections.IEnumerableAND的Add方法至少接受一个参数。
user7116 2011年

1
@SLaks是的,我忘记了。顺便说一句,这是一个很奇怪的要求,因为此构造不使用IEnumerable的方法。
安德烈

1
因为基类NameObjectCollectionBase使用IEnumerable。对于我来说,这是一堂课,如果您想检查使用的实现是什么,请确保检查直到的所有基本类型System.Object
CallMeLaNN 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.