C#의 Boolean.GetHashCode() 메서드는 현재 Boolean 인스턴스에 대한 해시 코드(hash code)를 반환하는 데 사용됩니다. 해시 코드는 해시 테이블과 같은 해시 기반 컬렉션에서 객체를 빠르게 조회할 때 활용되는 정수 값입니다.
문법(Syntax)
public override int GetHashCode();
이 메서드는 매개변수를 받지 않으며, 해당 인스턴스의 해시 코드를 나타내는 int 형식의 값을 반환합니다. Boolean 값의 경우 true는 1, false는 0을 반환합니다.
예제 1: 문자열과 Boolean의 해시 코드 비교
다음 예제에서는 문자열과 Boolean 값에 대해 GetHashCode() 메서드를 호출한 결과를 확인할 수 있습니다.
using System;
public class Demo {
public static void Main(String[] args){
string str = "JackSparrow!";
bool val = true;
char[] arr = { 'J', 'a'};
Console.WriteLine("String = "+str);
Console.WriteLine("String (after trim) = " + str.Trim(arr));
Console.WriteLine("String (Hashcode) = "+str.GetHashCode());
Console.WriteLine("Bool (Hashcode) = "+val.GetHashCode());
}
}실행 결과
String = JackSparrow! String (after trim) = ckSparrow! String (Hashcode) = -203134198 Bool (Hashcode) = 1
위 결과에서 볼 수 있듯이, 문자열의 해시 코드는 내용에 따라 임의의 정수로 생성되지만, Boolean 값 true의 해시 코드는 항상 1로 고정되어 반환됩니다.
예제 2: true와 false의 해시 코드 및 TypeCode 확인
이번에는 true와 false 두 가지 Boolean 값에 대해 각각 해시 코드와 TypeCode를 함께 출력해 보겠습니다.
using System;
public class Demo {
public static void Main(String[] args) {
bool val1 = true;
bool val2 = false;
Console.WriteLine("Value1 (Hashcode) = "+val1.GetHashCode());
Console.WriteLine("Value1 (TypeCode) = "+val1.GetTypeCode());
Console.WriteLine("Value2 (Hashcode) = "+val2.GetHashCode());
Console.WriteLine("Value2 (TypeCode) = "+val2.GetTypeCode());
}
}실행 결과
Value1 (Hashcode) = 1 Value1 (TypeCode) = Boolean Value2 (Hashcode) = 0 Value2 (TypeCode) = Boolean
핵심 정리
- true의 해시 코드는 항상 1, false의 해시 코드는 항상 0입니다.
- GetHashCode()는 매개변수 없이 호출하며 int 타입의 값을 반환합니다.
- GetTypeCode() 메서드를 사용하면 해당 인스턴스의 타입 코드가 Boolean임을 확인할 수 있습니다.