컬렉션 이니셜라이저를 사용하여 사전을 초기화하는 방법(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
에 대한 개체 이니셜라이저를 묶고, 바깥쪽 중괄호는 students
Dictionary<TKey,TValue>에 추가할 키/값 쌍에 대한 이니셜라이저를 묶습니다. 마지막으로, 사전에 대한 전체 컬렉션 이니셜라이저가 중괄호로 묶여 있습니다. 두 번째 초기화에서 할당의 왼쪽은 키이고, 오른쪽은 값이며 StudentName
에 개체 이니셜라이저를 사용합니다.
참고 항목
.NET