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

C# 我可以将集合初始值设定项与NameValueCollection一起使用吗?,c#,collections,C#,Collections,是否有一种使用C#集合初始值设定项语法初始化NVC的方法: NameValueCollection nvc = new NameValueCollection() { ("a", "1"), ("b", "2") }; 谢谢是的;只使用大括号而不是圆括号 var nvc = new NameValueCollection { {"a", "1"}, {"b", "2"} }; 您可以使用语法调用带有任意参数集的Add方法。您可以将集合初始值设定项用于具有Add方法的所有内容。是的,鸭子打字。

是否有一种使用C#集合初始值设定项语法初始化NVC的方法:

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

谢谢

是的;只使用大括号而不是圆括号

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

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

您可以将集合初始值设定项用于具有
Add
方法的所有内容。是的,鸭子打字。如果
Add
有超过1个参数,请在花括号中放入元组:

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

不完全是,;它必须实现
IEnumerable
。实现
System.Collections.IEnumerable
,并且有一个
Add
方法,至少有一个参数。@slakes是的,我忘了它。顺便说一句,这是一个非常奇怪的要求,因为这个构造不使用IEnumerable的方法。因为使用
IEnumerable
的基类
NameObjectCollectionBase
。这对我来说是一个教训,如果您想检查使用了什么实现,请确保检查所有基本类型,直到
System.Object
。感谢您的快速回复!有关对象和集合初始化的MSDN页面准确地概述了
NameValueCollection
接受此语法的原因:@six:实际上,它甚至没有提到此语法。很好的提示,它似乎隐藏在
字典
初始化页面中,“或者任何添加方法需要多个参数的集合,”所以又一次拯救了这一天!