Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# Double.GetHashCode() 메서드 – 개념부터 예제까지 총정리

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()와 함께 사용하면 객체 비교에 매우 유용합니다.