컬렉션 이니셜라이저를 사용하여 사전을 초기화하는 방법(C# 프로그래밍 가이드)

Dictionary<TKey,TValue>에는 키/값 쌍의 컬렉션이 있습니다. 해당 Add 메서드는 두 개의 매개 변수를 사용하며, 하나는 키에, 다른 하나는 값에 사용됩니다. Dictionary<TKey,TValue> 또는 여러 매개 변수를 사용하는 Add 메서드를 초기화하는 한 가지 방법은 다음 예제와 같이 각 매개 변수 집합을 중괄호로 묶는 것입니다. 또한 다음 예에서와 같이 인덱스 이니셜라이저를 사용하는 방법도 있습니다.

참고 항목

컬렉션을 초기화하는 이 두 가지 방법의 주요 차이점은 중복된 키가 있는 경우입니다. 예를 들면 다음과 같습니다.

{ 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
{ 111, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } }, 

Add 메서드는 ArgumentException: 'An item with the same key has already been added. Key: 111'을 throw하는 반면, 예의 두 번째 부분인 공용 읽기/쓰기 인덱서 메서드는 동일한 키로 기존 항목을 자동으로 덮어씁니다.

예시

다음 코드 예제에서 Dictionary<TKey,TValue>StudentName 유형의 인스턴스를 사용하여 초기화됩니다. 첫 번째 초기화에서는 Add 메서드와 두 인수를 사용합니다. 컴파일러는 각 int 키 및 StudentName 값 쌍에 Add에 대한 호출을 생성합니다. 두 번째 초기화에서는 Dictionary 클래스의 공용 읽기/쓰기 인덱서 메서드를 사용합니다.

public class HowToDictionaryInitializer
{
    class StudentName
    {
        public string? FirstName { get; set; }
        public string? LastName { get; set; }
        public int ID { get; set; }
    }

    public static void Main()
    {
        var students = new Dictionary<int, StudentName>()
        {
            { 111, new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 } },
            { 112, new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } },
            { 113, new StudentName { FirstName="Andy", LastName="Ruth", ID=198 } }
        };

        foreach(var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students[index].FirstName} {students[index].LastName}");
        }
        Console.WriteLine();		

        var students2 = new Dictionary<int, StudentName>()
        {
            [111] = new StudentName { FirstName="Sachin", LastName="Karnik", ID=211 },
            [112] = new StudentName { FirstName="Dina", LastName="Salimzianova", ID=317 } ,
            [113] = new StudentName { FirstName="Andy", LastName="Ruth", ID=198 }
        };

        foreach (var index in Enumerable.Range(111, 3))
        {
            Console.WriteLine($"Student {index} is {students2[index].FirstName} {students2[index].LastName}");
        }
    }
}

첫 번째 선언에서 컬렉션의 각 요소에는 두 쌍의 중괄호가 있습니다. 가장 안쪽 중괄호는 개체 이니셜라이저를 StudentName묶고, 가장 바깥쪽 중괄호는 키/값 쌍을 추가할 이니셜라이저를 studentsDictionary<TKey,TValue>묶습니다. 마지막으로, 사전에 대한 전체 컬렉션 이니셜라이저가 중괄호로 묶여 있습니다. 두 번째 초기화에서 할당의 왼쪽은 키이고, 오른쪽은 값이며 StudentName에 개체 이니셜라이저를 사용합니다.

참고 항목