programing tip

GetHashCode를 올바르게 구현

itbloger 2020. 12. 26. 09:36
반응형

GetHashCode를 올바르게 구현


이 질문에 이미 답변이 있습니다.

내 개체에 대해 GetHashCode를 구현 (또는 재정의)하는 방법에 대해 커뮤니티에서 듣고 싶습니다. equals 메서드를 재정의하면 그렇게해야한다는 것을 이해합니다. 나는 그것을 여러 번 구현했으며 때로는 기본 메서드를 호출했습니다. 내 개체가 동일한 세부 정보 (구성원)를 포함하는 경우 개체의 다른 인스턴스와 같아야한다는 것을 이해합니다. 클래스 멤버로부터 해시 코드를 얻는 가장 좋은 방법은 무엇입니까?


수업이 다음과 같다고 가정 해 보겠습니다.

class Frob {
    public string Foo { get; set; }
    public int Bar { get; set; }
    public double FooBar { get; set; }
}

하자 당신의 두 인스턴스 있도록 같음을 정의라고 Frob자신이 경우 동일 FooBar동일하지만, FooBar중요하지 않습니다.

그럼 당신은 정의해야 GetHashCode측면에서 FooBar. 한 가지 방법은 다음과 같습니다.

return this.Foo.GetHashCode() * 17 + this.Bar.GetHashCode();

기본적으로 평등을 정의하는 모든 필드를 통합하려고합니다. 한 가지 방법은 내가했던 것처럼 계속해서 17을 축적하고 곱하는 것입니다. 빠르고 간단하며 정확하며 일반적으로 좋은 분포를 제공합니다.

참조 URL : https://stackoverflow.com/questions/9009760/implementing-gethashcode-correctly

반응형