C#에서 Dictionary(딕셔너리)는 키(Key)와 값(Value) 쌍을 저장하기 위해 사용되는 제네릭 컬렉션입니다. 딕셔너리에서 키는 null일 수 없지만, 값은 null을 허용합니다. 또한 모든 키는 반드시 고유해야 하며, 중복된 키를 사용하려고 하면 컴파일러가 예외(Exception)를 발생시킵니다.
딕셔너리 값 업데이트의 기본 원리
앞서 언급했듯이 키는 모든 값에 대해 유일하므로, 키를 사용하여 딕셔너리의 값을 손쉽게 업데이트할 수 있습니다.
myDictionary[myKey] = myNewValue;
즉, 기존에 존재하는 키에 새로운 값을 할당하면 해당 키에 연결된 값이 새 값으로 대체됩니다. 이 방식은 별도의 메서드 호출 없이 인덱서(Indexer) 문법만으로 간단히 처리할 수 있다는 장점이 있습니다.
예제 코드
학생의 아이디(id)와 이름(name)을 저장하는 딕셔너리를 예로 들어 보겠습니다. 아래 코드에서는 id가 2인 학생의 이름을 "Mrk"에서 "Mark"로 변경합니다.
using System;
using System.Collections.Generic;
namespace DemoApplication{
class Program{
static void Main(string[] args){
Dictionary<int, string> students = new Dictionary<int, string>{
{ 1, "John" },
{ 2, "Mrk" },
{ 3, "Bill" }
};
Console.WriteLine($"Name of student having id 2: {students[2]}");
// id가 2인 학생의 이름 업데이트
students[2] = "Mark";
Console.WriteLine($"Updated Name of student having id 2: {students[2]}");
Console.ReadLine();
}
}
}코드 설명
- 딕셔너리 선언 및 초기화:
Dictionary<int, string>타입으로 students 객체를 생성하고, 컬렉션 초기화 구문으로 세 명의 학생 데이터를 추가했습니다. - 값 조회:
students[2]처럼 키를 지정하여 해당 키에 연결된 값을 읽어올 수 있습니다. - 값 업데이트:
students[2] = "Mark";구문으로 id가 2인 학생의 이름을 새로운 값으로 덮어씁니다.
실행 결과
위 코드를 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
Name of student having id 2: Mrk Updated Name of student having id 2: Mark
주의 사항
값을 업데이트할 때 지정한 키가 딕셔너리에 존재하지 않으면, 예외가 발생하는 것이 아니라 새로운 키/값 쌍이 추가됩니다. 따라서 기존 항목만 수정하고 싶다면 ContainsKey() 메서드나 TryGetValue() 메서드를 사용하여 키의 존재 여부를 먼저 확인하는 것이 안전합니다.