반응형
GetHashCode를 올바르게 구현
이 질문에 이미 답변이 있습니다.
내 개체에 대해 GetHashCode를 구현 (또는 재정의)하는 방법에 대해 커뮤니티에서 듣고 싶습니다. equals 메서드를 재정의하면 그렇게해야한다는 것을 이해합니다. 나는 그것을 여러 번 구현했으며 때로는 기본 메서드를 호출했습니다. 내 개체가 동일한 세부 정보 (구성원)를 포함하는 경우 개체의 다른 인스턴스와 같아야한다는 것을 이해합니다. 클래스 멤버로부터 해시 코드를 얻는 가장 좋은 방법은 무엇입니까?
수업이 다음과 같다고 가정 해 보겠습니다.
class Frob {
public string Foo { get; set; }
public int Bar { get; set; }
public double FooBar { get; set; }
}
하자 당신의 두 인스턴스 있도록 같음을 정의라고 Frob
자신이 경우 동일 Foo
과 Bar
동일하지만, FooBar
중요하지 않습니다.
그럼 당신은 정의해야 GetHashCode
측면에서 Foo
와 Bar
. 한 가지 방법은 다음과 같습니다.
return this.Foo.GetHashCode() * 17 + this.Bar.GetHashCode();
기본적으로 평등을 정의하는 모든 필드를 통합하려고합니다. 한 가지 방법은 내가했던 것처럼 계속해서 17을 축적하고 곱하는 것입니다. 빠르고 간단하며 정확하며 일반적으로 좋은 분포를 제공합니다.
참조 URL : https://stackoverflow.com/questions/9009760/implementing-gethashcode-correctly
반응형
'programing tip' 카테고리의 다른 글
단위 테스트 실행을위한 Python 패키지 구조, setup.py (0) | 2020.12.26 |
---|---|
Linux에서 iOS 에뮬레이트 / 시뮬레이트 (0) | 2020.12.26 |
Scala.React의 상태는 어떻습니까? (0) | 2020.12.26 |
F #의 거듭 제곱 연산자가 부동 소수점 숫자에만 작동하는 이유는 무엇입니까? (0) | 2020.12.26 |
대부분의 UI 프레임 워크가 단일 스레드 인 이유는 무엇입니까? (0) | 2020.12.26 |