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

C# Single.GetHashCode() 메서드 완벽 정리 – 예제 코드로 쉽게 배우기

C#의 Single.GetHashCode() 메서드는 현재 인스턴스의 해시 코드(hash code)를 반환하는 데 사용됩니다. 해시 코드는 객체를 고유하게 식별하는 정수 값으로, 해시 테이블이나 딕셔너리(Dictionary)처럼 해시 기반 컬렉션에서 데이터를 빠르게 조회할 때 활용됩니다.

구문

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

public override int GetHashCode();

이 메서드는 매개변수를 받지 않으며, 해당 float(Single) 값에 대응하는 int 타입의 해시 코드를 반환합니다.

예제 1

아래 예제에서는 두 개의 float 값에 대해 GetHashCode() 메서드를 호출하여 각각의 해시 코드를 출력하고, Equals() 메서드로 두 값이 서로 같은지 비교해 봅니다.

using System;
public class Demo {
   public static void Main() {
      float f1 = 40.2f;
      object f2 = 50.5f;
      Console.WriteLine("Value1 = "+f1);
      Console.WriteLine("HashCode of Value1 = "+f1.GetHashCode());
      Console.WriteLine("Value2 = "+f2);
      Console.WriteLine("HashCode of Value2 = "+f2.GetHashCode());
      Console.WriteLine("Are both the values equal? = "+f1.Equals(f2));
   }
}

실행 결과

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

Value1 = 40.2
HashCode of Value1 = 1109445837
Value2 = 50.5
HashCode of Value2 = 1112145920
Are both the values equal? = False

출력 결과에서 볼 수 있듯이, 값이 서로 다른 두 float 변수는 서로 다른 해시 코드를 가집니다. 또한 f1(40.2)과 f2(50.5)는 값이 다르므로 Equals() 비교 결과는 False가 됩니다.

예제 2

이번에는 두 float 변수의 해시 코드를 각각 구해 출력하고, CompareTo() 메서드를 이용해 두 값의 크기를 비교하는 예제를 살펴보겠습니다.

using System;
public class Demo {
   public static void Main() {
      float f1 = 15.3f;
      float f2 = 35.9f;
      Console.WriteLine("Value1 = "+f1);
      Console.WriteLine("Hashcode for Value1 = "+f1.GetHashCode());
      Console.WriteLine("Value2 = "+f2);
      Console.WriteLine("Hashcode for Value2 = "+f2.GetHashCode());
      Console.WriteLine("Is f1 and f2 equal? = "+f1.CompareTo(f2));
   }
}

실행 결과

위 프로그램을 실행하면 아래와 같은 결과가 출력됩니다.

Value1 = 15.3
Hashcode for Value1 = 1098173645
Value2 = 35.9
Hashcode for Value2 = 1108318618
Is f1 and f2 equal? = -1

CompareTo() 메서드는 첫 번째 값이 두 번째 값보다 작으면 음수(-1), 크면 양수(1), 같으면 0을 반환합니다. 따라서 f1(15.3)이 f2(35.9)보다 작기 때문에 결과값으로 -1이 출력된 것을 확인할 수 있습니다.