C#의 Decimal.GetHashCode() 메서드는 현재 Decimal 인스턴스에 대한 해시 코드(hash code)를 반환하는 데 사용됩니다. 해시 코드는 해시 테이블과 같은 해시 기반 컬렉션에서 객체를 빠르게 조회하거나 비교할 때 활용되는 정수 값입니다.
구문(Syntax)
Decimal.GetHashCode() 메서드의 기본 구문은 다음과 같습니다.
public override int GetHashCode();
이 메서드는 매개변수를 받지 않으며, 현재 인스턴스의 해시 코드를 나타내는 int 타입의 값을 반환합니다.
예제 1
다음은 Decimal.GetHashCode() 메서드를 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main(){
Decimal val = 135269.38193M;
Console.WriteLine("Decimal Value = {0}", val);
Console.WriteLine("HashCode = {0}", (val.GetHashCode()) );
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal Value = 135269.38193 HashCode = 1328665595
예제 2
이번에는 Decimal.MaxValue(Decimal 타입이 표현할 수 있는 최댓값)를 사용하여 GetHashCode() 메서드를 구현해 보겠습니다.
using System;
public class Demo {
public static void Main(){
Decimal val = Decimal.MaxValue;
Console.WriteLine("Decimal Value = {0}", val);
Console.WriteLine("HashCode = {0}", (val.GetHashCode()) );
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Decimal Value = 79228162514264337593543950335 HashCode = 1173356544
정리
Decimal.GetHashCode() 메서드는 Decimal 값에 대해 고유한 해시 코드를 생성하며, 두 예제에서 확인할 수 있듯이 값의 크기나 범위와 관계없이 항상 int 범위의 정수를 반환합니다. 단, 서로 다른 Decimal 값이 동일한 해시 코드를 가질 수도 있으므로, 해시 코드만으로 두 값의 동등성을 판단해서는 안 되며 반드시 Equals() 메서드와 함께 사용해야 합니다.