C# Double.GetHashCode() 메서드란?
C#에서 Double.GetHashCode() 메서드는 현재 Double 인스턴스의 해시 코드(hash code)를 반환하는 데 사용됩니다. 해시 코드는 해시 테이블 같은 자료구조에서 객체를 빠르게 검색하고 비교할 때 활용되는 정수 값으로, 동일한 double 값은 항상 동일한 해시 코드를 갖습니다.
구문
메서드의 기본 구문은 다음과 같습니다.
public override int GetHashCode ();
이 메서드는 매개변수를 받지 않으며, 현재 인스턴스의 해시 코드를 나타내는 int 값을 반환합니다.
예제 1
다음은 Double.GetHashCode() 메서드의 기본적인 사용 예입니다.
using System;
public class Demo {
public static void Main(){
double d1 = 150d;
object ob1 = 1/2;
Console.WriteLine("Double1 Value = "+d1);
Console.WriteLine("Object Value = "+ob1);
Console.WriteLine("Are both the values equal? = "+d1.Equals(ob1));
Console.WriteLine("HashCode of Double1 Value = {0}", d1.GetHashCode());
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Double1 Value = 150 Object Value = 0 Are both the values equal? = False HashCode of Double1 Value = 1080213504
여기서 ob1에는 정수 나눗셈 결과인 0이 저장되므로, double 값 150과 Equals()로 비교하면 False가 반환됩니다. 아울러 GetHashCode()를 호출하면 값 150에 대응하는 해시 코드 1080213504가 출력되는 것을 확인할 수 있습니다.
예제 2
이번에는 다른 double 값으로 해시 코드를 확인해 보겠습니다.
using System;
public class Demo {
public static void Main(){
double d = 10d;
Console.WriteLine("Double Value = "+d);
Console.WriteLine("HashCode of Double Value = {0}", d.GetHashCode());
}
}출력 결과
Double Value = 10 HashCode of Double Value = 1076101120
핵심 정리
- Double.GetHashCode()는 현재 double 인스턴스의 해시 코드를
int형태로 반환합니다. - 동일한 double 값은 항상 동일한 해시 코드를 가지므로,
HashSet<double>,Dictionary같은 해시 기반 컬렉션에서 안정적으로 활용할 수 있습니다. - 해시 코드가 같다고 해서 두 값이 반드시 동일한 것은 아니지만(해시 충돌 가능성),
Equals()와 함께 사용하면 객체 비교에 매우 유용합니다.