2010-05-25 1 views

답변

10

이 인수로 값을 개체에 Add 메소드를 호출 할 수 있습니다 : (: 7.5.10.3 :는 C# 사양에 지정된 컬렉션 이니셜 라이저) 이름 Add가 하드 코딩

var __temp = new Dictionary<int, string>(); 
__temp.Add(1, "value1"); 
__temp.Add(2, "value2"); 
dict = __temp; 

을 . 메소드에 대한 인수의 수는 제한되지 않습니다. 메서드의 매개 변수 수와 일치해야합니다. 이와 같은 방법으로 Add 메서드를 제공하는 컬렉션 (IEnumerable 인터페이스 구현)을 사용할 수 있습니다.

더 명확하게 말하자면, 컴파일러는 클래스가 인 것을 실제로 신경 쓰지 않고 KeyValuePair을 만들고이를 Add으로 전달합니다. 단순히 각 호출에서 각 컬렉션 항목의 모든 인수를 전달하는 Add 메서드에 대한 호출 시퀀스를 생성합니다. Add 메서드는 나머지를 담당합니다.

+4

하나의 아주 약간의 수정 - 추가 호출 후 *까지 * 변수가 할당되지 않습니다. 기본적으로 임시 변수가있는 것처럼 보입니다. 그것은 nitpick이지만 헤이 - 우리는 "덮개 아래"로 갈 것입니다 :) (별개의 해답이 아닙니다.) 또한 컬렉션이 IEnumerable을 구현해야한다고 언급하고 싶을 수도 있습니다. GetEnumerator()에 대한 호출이 없습니다. –

+0

재미있는 배경 정보는 http://blogs.msdn.com/b/madst/archive/2006/10/10/what-is-a-collection_3f00_.aspx – LukeH

+0

@ 존 : 순서에 대한 흥미로운 관찰. 결정된. 감사. IEnumerable 요구 사항도 추가되었습니다. –