Section 26.2: C# 6 인덱스 초기자 (Index initializer)
C# 6 부터는, indexer 를 가진 collection 들의 경우 초기값을 할당할 인덱스를 대괄호로 둘러싼 후, 등호 및 초기값을 명시하는 방법으로 초기화를 수행할 수 있다.
Dictionary 초기화하기
Dictionary
를 위에서 소개한 문법을 이용하여 초기화하는 예제:
var dict = new Dictionary<string, int>
{
["key1"] = 1,
["key2"] = 50
};
위 예제는 아래 코드와 동일하다:
var dict = new Dictionary<string, int>();
dict["key1"] = 1;
dict["key2"] = 50;
C# 6 이전의 컬렉션 초기자 (Collection initializer) 문법을 이용하여 동일한 초기화 작업을 수행하는 코드를 작성해보면 다음과 같다:
var dict = new Dictionary<string, int>
{
{ "key1", 1 },
{ "key2", 50 }
};
위 코드는 다음과 같은 작업을 수행할 것이다:
var dict = new Dictionary<string, int>();
dict.Add("key1", 1);
dict.Add("key2", 50);
따라서, 이 새로운 문법은 실제 기능상에서 큰 차이가 있음을 알 수 있는데, 그것은 바로 객체의 Add()
메소드를 호출하는 기존 방식 대신에, 초기화될 객체의 indexer 를 사용하여 값 할당이 이루어 진다는 점이다. 이것이 의미하는 바는, 이 새로운 문법은 public 하게 사용 가능한 indexer 하나만을 필요로 한다는 것이며, 그러한 indexer 가 있는 어떠한 객체들에도 사용 가능하다는 점이다.
public class IndexableClass {
public int this[int index] {
set {
Console.WriteLine("{0} was assigned to index {1}", value, index);
}
}
}
var foo = new IndexableClass {
[0] = 10,
[1] = 20
}
위 코드의 실행 결과는 다음과 같다:
10 was assigned to index 0
20 was assigned to index 1
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
26.4: 객체 초기자 (Object initializer) 내에서 컬렉션 초기자 (Collection initializer) 사용하기 (0) | 2021.08.11 |
---|---|
26.3: 사용자 정의 class 를 컬렉션 초기자 (Collection initializer) 로 초기화하기 (0) | 2021.07.08 |
26.1: 컬렉션 초기자 (Collection initializer) (0) | 2021.07.06 |
25.1: BigInteger 활용 - 피보나치 수열 중 처음으로 1,000 개의 숫자를 가지는 값 계산하기 (0) | 2021.07.06 |
24.3: Null 값일 수도 있는 GUID 선언하기 (0) | 2021.07.05 |