C#의 DateTimeOffset.GetHashCode() 메서드는 현재 DateTimeOffset 객체에 대한 해시 코드(hash code)를 반환하는 메서드입니다. 이 메서드는 32비트 부호 있는 정수(signed integer) 형태의 해시 코드를 반환하며, 주로 해시 테이블이나 딕셔너리 같은 해시 기반 컬렉션에서 객체를 빠르게 조회할 때 활용됩니다.
문법(Syntax)
DateTimeOffset.GetHashCode() 메서드의 기본 문법은 다음과 같습니다.
public override int GetHashCode();
이 메서드는 매개변수를 받지 않으며, int 타입의 32비트 부호 있는 정수 해시 코드를 반환합니다.
예제 1
다음은 DateTimeOffset.GetHashCode() 메서드를 구현한 첫 번째 예제입니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 09, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
DateTimeOffset dateTimeOffset2 = new DateTimeOffset(2019, 11, 12, 8, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset1 = {0}", dateTimeOffset1);
int hash1 = dateTimeOffset1.GetHashCode();
Console.WriteLine("DateTimeOffset1 HashCode = {0}", hash1);
int hash2 = dateTimeOffset2.GetHashCode();
Console.WriteLine("DateTimeOffset2 HashCode = {0}", hash2);
Console.WriteLine("DateTimeOffset2 = {0}", dateTimeOffset2);
int res = DateTimeOffset.Compare(dateTimeOffset1, dateTimeOffset2);
// DateTimeOffset1이 DateTimeOffset2보다 이전 시간이므로 0 미만의 값 반환
Console.WriteLine(res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 출력 결과를 얻을 수 있습니다.
DateTimeOffset1 = 9/10/2019 6:20:10 AM -05:00 DateTimeOffset1 HashCode = -543087392 DateTimeOffset2 HashCode = 64112243 DateTimeOffset2 = 11/12/2019 8:20:10 AM -05:00 -1
출력 결과에서 볼 수 있듯이, 서로 다른 날짜와 시간 값을 가진 두 개의 DateTimeOffset 객체는 각각 고유한 해시 코드를 반환합니다. 또한 Compare 메서드의 결과값이 -1인 것은 첫 번째 객체가 두 번째 객체보다 이른 시점임을 의미합니다.
예제 2
이번에는 단일 DateTimeOffset 객체에 대해 GetHashCode() 메서드를 사용하는 예제를 살펴보겠습니다.
using System;
public class Demo {
public static void Main() {
DateTimeOffset dateTimeOffset1 = new DateTimeOffset(2019, 11, 10, 6, 20, 10, new TimeSpan(-5, 0, 0));
Console.WriteLine("DateTimeOffset = {0}", dateTimeOffset1);
int hash = dateTimeOffset1.GetHashCode();
Console.WriteLine("DateTimeOffset HashCode = {0}", hash);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
DateTimeOffset = 11/10/2019 6:20:10 AM -05:00 DateTimeOffset HashCode = -92293937
정리
DateTimeOffset.GetHashCode() 메서드는 날짜, 시간, 그리고 UTC 오프셋 정보를 기반으로 해시 코드를 생성합니다. 동일한 날짜·시간·오프셋 값을 가진 DateTimeOffset 객체는 항상 동일한 해시 코드를 반환하므로, 해시 기반 자료구조에서 키로 사용하기에 적합합니다. 다만 해시 코드 값은 .NET 런타임 버전에 따라 달라질 수 있으므로, 애플리케이션 간 영속적인 저장 용도로는 사용하지 않는 것이 좋습니다.