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
에 대한 개체 이니셜라이저를 묶고, 바깥쪽 중괄호는 students
Dictionary<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참조하세요.
참고 사항
- 개체 이니셜라이저 및 컬렉션 이니셜라이저
- Visual Studio의 GitHub Copilot
- VS Code의 GitHub Copilot
.NET