C#의 HybridDictionary는 컬렉션 크기가 작을 때는 ListDictionary로 동작하고, 컬렉션이 커지면 자동으로 Hashtable로 전환되는 컬렉션 클래스입니다. 이 클래스에서 지정된 키를 사용해 값을 가져오거나 설정하려면 인덱서(this[])를 활용하면 됩니다.
예제 1 – 지정된 키의 값 가져오기
아래 예제에서는 HybridDictionary에 여러 항목을 추가한 후, 키 "5"에 해당하는 값을 인덱서를 통해 가져와 출력합니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary myDict = new HybridDictionary();
myDict.Add("1", "Tablet");
myDict.Add("2", "Desktop");
myDict.Add("3", "Speakers");
myDict.Add("4", "Laptop");
myDict.Add("5", "Notebook");
myDict.Add("6", "Ultrabook");
myDict.Add("7", "HDD");
myDict.Add("8", "SDD");
Console.WriteLine("키 5의 값 = " + myDict["5"]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
키 5의 값 = Notebook
예제 2 – 지정된 키의 값 설정(수정)하기
인덱서를 사용하면 기존 키에 새로운 값을 할당하여 간단히 수정할 수도 있습니다. 아래 예제에서는 키 "5"의 값을 "Smart Watches"로 변경한 뒤 다시 출력합니다.
using System;
using System.Collections.Specialized;
public class Demo {
public static void Main() {
HybridDictionary myDict = new HybridDictionary();
myDict.Add("1", "Tablet");
myDict.Add("2", "Desktop");
myDict.Add("3", "Speakers");
myDict.Add("4", "Laptop");
myDict.Add("5", "Notebook");
myDict.Add("6", "Ultrabook");
myDict.Add("7", "HDD");
myDict.Add("8", "SDD");
Console.WriteLine("키 5의 값 = " + myDict["5"]);
// 인덱서를 사용해 값 변경
myDict["5"] = "Smart Watches";
Console.WriteLine("키 5의 값 [변경 후] = " + myDict["5"]);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
키 5의 값 = Notebook 키 5의 값 [변경 후] = Smart Watches
핵심 정리
- 값 가져오기:
myDict["키"]형태로 인덱서를 읽으면 해당 키에 연결된 값을 반환합니다. - 값 설정/수정:
myDict["키"] = 값형태로 할당하면 해당 키의 값이 새로운 값으로 대체됩니다. 키가 존재하지 않으면 새 항목이 추가됩니다. - HybridDictionary는 소규모 컬렉션에서는 ListDictionary의 성능을, 대규모 컬렉션에서는 Hashtable의 성능을 발휘하므로 요소 수가 가변적인 상황에서 유용합니다.