ContainsKey는 C#의 Dictionary<TKey, TValue> 클래스에서 제공하는 메서드로, 특정 키가 딕셔너리에 존재하는지 여부를 확인할 때 사용합니다. 반환값은 bool 타입으로, 키가 존재하면 true, 존재하지 않으면 false를 반환합니다.
딕셔너리 선언 및 요소 추가
먼저 Dictionary를 선언하고 요소를 추가하는 방법부터 살펴보겠습니다.
var dict = new Dictionary<string, int>() {
{"TV", 1},
{"Home Theatre", 2},
{"Amazon Alexa", 3},
{"Google Home", 5},
{"Laptop", 5},
{"Bluetooth Speaker", 6}
};
ContainsKey()로 키 존재 여부 확인하기
이제 딕셔너리에 특정 키가 존재하는지 확인해야 하는 상황을 가정해 보겠습니다. 이때 ContainsKey() 메서드를 활용하면 간단하게 처리할 수 있습니다.
if (dict.ContainsKey("Laptop") == true) {
Console.WriteLine(dict["Laptop"]);
}
키가 존재하는 경우에만 해당 키의 값을 안전하게 조회할 수 있으므로, 존재하지 않는 키에 접근해 KeyNotFoundException이 발생하는 것을 예방할 수 있습니다.
전체 예제 코드
using System;
using System.Collections.Generic;
public class Demo {
public static void Main() {
var dict = new Dictionary<string, int>() {
{"TV", 1},
{"Home Theatre", 2},
{"Amazon Alexa", 3},
{"Google Home", 5},
{"Laptop", 5},
{"Bluetooth Speaker", 6}
};
if (dict.ContainsKey("Laptop") == true) {
Console.WriteLine(dict["Laptop"]);
}
if (dict.ContainsKey("Amazon Alexa") == true) {
Console.WriteLine(dict["Amazon Alexa"]);
}
}
}
실행 결과
5 3
알아두면 좋은 점
ContainsKey()는 내부적으로 해시 기반 조회를 수행하므로 평균적으로 O(1)의 시간 복잡도를 가집니다. 따라서 대량의 데이터에서도 빠르게 키 존재 여부를 판단할 수 있습니다.
또한, 키의 존재 여부와 값을 동시에 필요로 하는 경우에는 TryGetValue() 메서드를 사용하는 것이 더 효율적입니다. 이 메서드는 한 번의 조회로 존재 여부 확인과 값 가져오기를 모두 처리할 수 있습니다.