컬렉션 이니셜 라이저를 NameValueCollection과 함께 사용할 수 있습니까?


92

C # 컬렉션 이니셜 라이저 구문을 사용하여 NVC를 초기화하는 방법이 있습니까?

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

감사

답변:


139

예; 괄호 대신 중괄호를 사용합니다.

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

Add구문을 사용하여 임의의 매개 변수 세트가있는 메소드를 호출 할 수 있습니다 .


빠른 답변에 감사드립니다!
격차

개체 및 컬렉션 초기화 의 MSDN 페이지에는 NameValueCollection이 구문을 허용 하는 이유가 정확히 설명되어 있습니다. msdn.microsoft.com/en-us/library/bb384062.aspx
user7116

3
@six : 사실,이 구문은 언급하지 않습니다.
SLaks

4
잘 잡았습니다 Dictionary<K,V>. "또는 Add 메서드가 여러 매개 변수를 사용하는 컬렉션"을 위한 페이지에 묻혀있는 것으로 보입니다. msdn.microsoft.com/en-us/library/bb531208.aspx
user7116

8

Add메서드 가있는 모든 항목에 컬렉션 이니셜 라이저를 사용할 수 있습니다 . 그래, 오리 타이핑. 경우 Add보다 다음이 1 PARAM 곱슬 bracets에서 튜플을 넣어 :

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

3
좀 빠지는; 구현해야합니다 IEnumerable.
SLaks

3
System.Collections.IEnumerableAND를 구현 하는 Add메서드는 적어도 하나의 인수를 사용합니다.
user7116

1
@ SLaks 예, 잊어 버렸습니다. Btw이 구조는 IEnumerable의 메서드를 사용하지 않기 때문에 다소 이상한 요구 사항입니다.
Andrey

1
기본 클래스 때문에 NameObjectCollectionBase그 사용 IEnumerable. 이전에 사용 된 구현이 무엇인지 확인하려면 모든 기본 유형을 최대 System.Object.
CallMeLaNN
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.