2010-06-17 6 views

답변

3

등호 해시 - 같음 (GetHashCode 및 같음)에 대한 유용한 의미를 얻기 위해 자신의 컨테이너를 정의하고 목록을 래핑 할 수도 있습니다. 원하는 경우 래퍼를 IList에 맞게 만들 수도 있습니다.

변경 가능성 문제 및 해싱 사전에서 문제가되는 새로운 객체를 사용하는 GetHashCode/Equals 결과가 변경되지 않도록하려면 일종의 가드를 제공해야합니다 (생성시 입력 사본을 만들 수도 있습니다). 귀하의 유형) 및/또는 제약 사항을 문서화하십시오.

SequenceEqual을 사용하면 Equals를 다소 간단하게 구현할 수 있지만 관련 방법으로 GetHashCode를 구현해야합니다. 간단한 방법은 각 요소의 GetHashCode를 XOR하는 것입니다.

또는 하나의 사전에서 방금 사용하는 경우 사용자 지정 IEqualityComparer을 제공하고 포장 유형을 만들지 않도록 할 수 있습니다 (Dictionary constructor overload).

그것은 최종 목표는 아주 잘 이미

주 :-) 등의 포장 용기가 무엇인지 따라 달라 .NET4에서 같음 재정의 GetHashCode 및 Tuple<...> classes의 세트가있다. 이전 .NET 버전에 대한 타사 대안으로 cadenza을 참조하십시오.

+0

우수, 많이 감사합니다! – gatoatigrado

관련 문제