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 인덱서 메서드는 동일한 키를 사용하여 기존 항목을 조용히 덮어씁니다.
예시
다음 코드 예제에서 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# 프로젝트에서 사전 테스트 데이터 및 유효성 검사 시나리오를 신속하게 생성할 수 있습니다.
다음은 Visual Studio Copilot 채팅에서 사용할 수 있는 프롬프트 예제입니다.
Generate data collections for tests to create a separate Dictionary<int, Student> containing 10 valid Student records and 5 invalid records.
- Valid records should have realistic Name and Grade values.
- Invalid records should include cases such as missing Name, Grade < 0, or Grade > 100.
- This dictionary should be used only for testing purposes and not modify existing production code.
- Generate test code that utilizes this test data for validation scenarios.
- Call test method to run the test.
코필로트의 제안을 적용하기 전에 검토합니다.
GitHub Copilot에 대한 자세한 내용은 GitHub의 FAQ를 참조하세요.
참고 사항
.NET