개요
C#의 DateTime.GetHashCode() 메서드는 현재 DateTime 인스턴스에 대한 해시 코드를 반환합니다. 반환되는 값은 32비트 부호 있는 정수(signed integer) 형태입니다.
해시 코드는 주로 해시 테이블과 같은 자료구조에서 객체를 빠르게 조회하거나 비교할 때 활용됩니다. 다만 동일한 날짜와 시간이라도 .NET 런타임 버전에 따라 해시 값이 달라질 수 있으므로, 데이터베이스나 파일처럼 영속적으로 저장되는 곳에는 사용하지 않는 것이 좋습니다.
구문
다음은 DateTime.GetHashCode() 메서드의 기본 구문입니다.
public override int GetHashCode ();
예제 1: 특정 날짜의 해시 코드 구하기
다음 예제는 지정된 날짜(2019년 11월 10일 오전 7시 20분 45초)에 대한 해시 코드를 구하는 방법을 보여줍니다.
using System;
public class Demo {
public static void Main() {
DateTime d = new DateTime(2019, 11, 10, 7, 20, 45);
int res = d.GetHashCode();
Console.WriteLine("HashCode for date {0} = {1}", d, res);
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
HashCode for date 11/10/2019 7:20:45 AM = -2002476754
예제 2: 현재 시간의 해시 코드 구하기
다음 예제는 DateTime.Now 속성을 사용하여 현재 시스템 시간에 대한 해시 코드를 구합니다.
using System;
public class Demo {
public static void Main() {
DateTime d = DateTime.Now;
int res = d.GetHashCode();
Console.WriteLine("HashCode for date {0} = {1}", d, res);
}
}출력 결과
실행 시점의 시간에 따라 다음과 유사한 결과가 출력됩니다.
HashCode for date 10/16/2019 7:03:37 AM = -16205546
정리
DateTime.GetHashCode() 메서드는 DateTime 객체를 32비트 정수형 해시 코드로 변환하여 반환합니다. 고정된 날짜를 사용하면 동일한 런타임 환경에서는 항상 같은 해시 코드가 계산되며, DateTime.Now처럼 현재 시간을 이용하면 실행 시점마다 다른 해시 값을 얻을 수 있습니다.