Section 26.1: 컬렉션 초기자 (Collection initializer)

컬렉션 타입을 특정 요소 값들로 초기화 시키기:

var stringList = new List<string> { "foo", "bar", };

컬렉션 초기자는 Add() 호출을 대신해주는 일종의 문법적 간편화 장치 (syntactic sugar) 로 볼 수 있다. 위 예제는 아래 코드와 동일하다:

var temp = new List<string>(); temp.Add("foo"); temp.Add("bar"); var stringList = temp;

여기서 눈여겨 볼 점은, 경쟁 조건 (race condition) 을 피하기 위해 임시 변수를 사용하여 초기화 과정이 원자적 (atomic) 으로 이루어진다는 점이다.

역주: 임시 변수를 사용하지 않고 stringList 에 직접 Add() 를 반복할 경우, "foo" 와 "bar" 사이에 다른 스레드에서 요소를 추가한다거나 하는 경우가 생길 수 있습니다.

Add() 메소드가 복수개의 파라미터를 처리할 수 있는 타입들에 대해서는, 쉼표로 분리된 (comma-separated) 인자 값들을 중괄호로 감싸 초기화 시킬 수 있다:

var numberDictionary = new Dictionary<int, string> { { 1, "One" }, { 2, "Two" }, };

위 예제는 다음 코드와 동일하다:

var temp = new Dictionary<int, string>(); temp.Add(1, "One"); temp.Add(2, "Two"); var numberDictionarynumberDictionary = temp;
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.

[출처] https://books.goalkicker.com/CSharpBook/

반응형

+ Recent posts