NameValueCollectionでコレクション初期化子を使用できますか?


92

C#コレクション初期化子構文を使用してNVCを初期化する方法はありますか?

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:実際、この構文については触れられていません。
SLaks、2011

4
Dictionary<K,V>初期化のためにページに埋め込まれているようです。「またはAddメソッドが複数のパラメータをとるコレクション」msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Addメソッドを持つすべてのものでコレクション初期化子を使用できます。うん、アヒルのタイピング。Add1つ以上のパラメータがある場合、タプルを中括弧に入れます。

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

3
結構です。実装する必要がありますIEnumerable
SLaks '24

3
System.Collections.IEnumerableANDの実装には、Add少なくとも1つの引数を取るメソッドがあります。
user7116

1
@SLaksはい、忘れていました。ところで、この構造はIEnumerableのメソッドを使用しないため、かなり奇妙な要件です。
Andrey

1
NameObjectCollectionBaseを使用する基本クラスだからIEnumerableです。これまでのレッスンですが、使用した実装を確認したい場合は、までのすべての基本型を確認してくださいSystem.Object
CallMeLaNN
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.