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

C# Int64.GetHashCode() 메서드 완벽 가이드 – 예제 코드로 쉽게 배우기

C#의 Int64.GetHashCode() 메서드는 해당 인스턴스의 해시 코드(hash code)를 반환하는 데 사용됩니다. 해시 코드는 해시 테이블과 같은 자료구조에서 객체를 빠르게 검색하거나 비교할 때 활용되는 정수 값으로, 값 기반 비교 로직을 구현할 때 중요한 역할을 합니다.

구문(Syntax)

Int64.GetHashCode() 메서드의 기본 구문은 다음과 같습니다.

public override int GetHashCode ();

이 메서드는 매개변수를 받지 않으며, 현재 64비트 부호 있는 정수(long) 값에 대한 해시 코드를 int 타입으로 반환합니다.

예제 1

다음은 Int64.GetHashCode() 메서드를 사용하는 첫 번째 예제입니다. 서로 다른 두 long 값을 비교하고 각각의 해시 코드를 출력해 보겠습니다.

using System;
public class Demo {
   public static void Main(){
      long val1 = 8768768768;
      long val2 = 7889765555;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("Are they equal? = "+val1.Equals(val2));
      Console.WriteLine("Value1 (HashCode) = "+val1.GetHashCode());
      Console.WriteLine("Value2 (HashCode) = "+val2.GetHashCode());
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Value1 = 8768768768
Value2 = 7889765555
Are they equal? = False
Value1 (HashCode) = 178834178
Value2 (HashCode) = -700169038

예제 2

이번에는 0과 Int64.MaxValue(long 타입이 가질 수 있는 최댓값)를 사용한 또 다른 예제를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main(){
      long val1 = 0;
      long val2 = Int64.MaxValue;
      Console.WriteLine("Value1 = "+val1);
      Console.WriteLine("Value2 = "+val2);
      Console.WriteLine("Are they equal? = "+val1.Equals(val2));
      Console.WriteLine("Value1 (HashCode) = "+val1.GetHashCode());
      Console.WriteLine("Value2 (HashCode) = "+val2.GetHashCode());
   }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Value1 = 0
Value2 = 9223372036854775807
Are they equal? = False
Value1 (HashCode) = 0
Value2 (HashCode) = -2147483648

핵심 포인트 정리

  • GetHashCode() 메서드는 객체의 값을 기반으로 하는 정수형(int) 해시 코드를 반환합니다.
  • 두 값이 같으면 해시 코드도 항상 같지만, 해시 코드가 같다고 해서 두 값이 반드시 같은 것은 아닙니다(해시 충돌 가능성).
  • 값 0의 해시 코드는 0이며, Int64.MaxValue의 해시 코드는 -2147483648로 계산됩니다.
  • 해시 코드는 주로 Dictionary<TKey, TValue>, HashSet<T> 등의 컬렉션에서 빠른 검색을 위해 내부적으로 활용됩니다.