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/

반응형

+ Recent posts