다음을 통해 공유


컬렉션 이니셜라이저를 사용하여 사전을 초기화하는 방법(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'를 발생시킵니다. 예제의 두 번째 부분인 public read/write 인덱서 메서드는 동일한 키를 사용하여 기존 항목을 조용히 덮어씁니다.

AI 지원을 사용하여 사전을 초기화할 수 있습니다.

예시

다음 코드 예제에서 Dictionary<TKey,TValue>StudentName 유형의 인스턴스를 사용하여 초기화됩니다. 첫 번째 초기화에서는 Add 메서드와 두 인수를 사용합니다. 컴파일러는 각 Add 키와 int 값 쌍에 대해 StudentName을 호출합니다. 두 번째는 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에 개체 이니셜라이저를 사용합니다.

AI를 사용하여 데이터 사전 초기화

GitHub Copilot와 같은 AI 도구를 사용하여 C# 코드를 생성하여 컬렉션 이니셜라이저를 사용하여 사전을 초기화할 수 있습니다. 요구 사항에 따라 세부 정보를 추가하도록 프롬프트를 사용자 지정할 수 있습니다.

다음 텍스트는 코필로트 채팅에 대한 예제 프롬프트를 보여 줍니다.

Generate C# code to initialize Dictionary<int, Employee> using key-value pairs within the collection initializer. The employee class is a record class with two properties: Name and Age.

GitHub Copilot는 AI를 통해 구동되므로 놀라움과 실수가 가능합니다. 자세한 내용은 부조종사 FAQ참조하세요.

참고 사항