더북(TheBook)

운 좋게도 .NET 코어와 .NET 5가 나오면서 HashCode 클래스에서는 충돌을 최소화하는 방식으로 해시 값을 결합하는 것을 추상화했다. 두 값을 결합하려면 단지 다음과 같이 작성하기만 하면 된다.

public override int GetHashCode() {
    return HashCode.Combine(TopicId, PostId);
}

해시 코드는 딕셔너리의 키뿐만 아니라 집합과 같은 다른 데이터 구조에서도 사용할 수 있다. 헬퍼 함수를 이용해 적절한 GetHashCode를 작성하는 것이 훨씬 더 쉬워졌다. 그래서 이 부분을 그냥 넘길 이유가 없다. 계속 지켜보자.

그럼 딕셔너리를 사용하지 말아야 할 때는 언제일까? 키-값 쌍을 단순히 순차적으로 검사해야 한다면 딕셔너리는 아무런 이점도 없다. 심지어는 성능을 해칠 수 있다. 불필요한 오버헤드를 막으려면 List<KeyValuePair<K,V>>를 대신 사용하는 것이 좋다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.