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/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
26.3: 사용자 정의 class 를 컬렉션 초기자 (Collection initializer) 로 초기화하기 (0) | 2021.07.08 |
---|---|
26.2: C# 6 인덱스 초기자 (Index initializer) (0) | 2021.07.07 |
25.1: BigInteger 활용 - 피보나치 수열 중 처음으로 1,000 개의 숫자를 가지는 값 계산하기 (0) | 2021.07.06 |
24.3: Null 값일 수도 있는 GUID 선언하기 (0) | 2021.07.05 |
24.2: GUID 생성하기 (0) | 2021.07.05 |