일관된 객체 비교를 위해
재정의 및 를 재정의합니다GetHashCode
메소드를 무시하는 것이 필수적입니다. 이것은 객체가 사전 또는 해시 세트와 같은 해시 기반 컬렉션에서 키로 사용될 때 특히 중요합니다.
클래스 Equals
: 를 고려하십시오
>를 사용자 정의하면 기본값 Equals
(에서 상속)는 객체의 메모리 주소에 따라 여전히 해시 코드를 생성합니다. 이 불일치는 해시 테이블에서 GetHashCode 왜 일관된 해싱이 중요한가
Foo
재정의
<code class="language-csharp">public override bool Equals(object obj) { // ... comparison logic based on FooId ... }</code>일관성 해싱 :
객체의 해시 코드는 해시 테이블의 위치를 결정합니다. 동일한 객체 Equals
Foo
동일한 해시 코드를 가져야합니다.
해시 충돌 방지 : FooId
두 개 객체에 동일한 해시 코드 (충돌)가 있으면 해시 기반 컬렉션이 확인하기 위해 GetHashCode
를 호출하지 않고 동일하다고 잘못 가정 할 수 있습니다. 잘 구현 된 Object
는 충돌을 최소화하여 Foo
가 진정한 평등을 결정하는 데 사용됩니다.
효과적으로 구현
구현은 메소드의 논리와 정렬되어야합니다 :
GetHashCode
위 내용은 `equals '를 재정의 할 때 왜'gethashcode '를 무시해야합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!