C#의 Boolean.ToString(IFormatProvider) 메서드는 현재 Boolean 인스턴스의 값을 이에 상응하는 문자열 표현으로 변환할 때 사용합니다. 이 메서드는 문화권(culture) 관련 서식 정보를 제공하는 개체를 매개변수로 받을 수 있지만, Boolean 값은 문화권에 따라 달라지지 않으므로 어떤 문화권을 지정하더라도 항상 "True" 또는 "False"라는 문자열이 반환된다는 점이 특징입니다.
구문
메서드의 기본 구문은 다음과 같습니다.
public string ToString (IFormatProvider provider);
위 구문에서 provider 매개변수는 문화권별 서식 정보를 제공하는 IFormatProvider 개체입니다.
예제 1: en-us 문화권 지정하기
첫 번째 예제를 통해 실제 동작 방식을 살펴보겠습니다.
using System;
using System.Globalization;
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());
CultureInfo provider = new CultureInfo("en-us");
Console.WriteLine("Value1 = "+val1.ToString(provider));
Console.WriteLine("Value2 = "+val2.ToString(provider));
}
}출력 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Value1 (Hashcode) = 1 Value1 (TypeCode) = Boolean Value2 (Hashcode) = 0 Value2 (TypeCode) = Boolean Value1 = True Value2 = False
true 값은 해시코드 1을, false 값은 해시코드 0을 가지며, 두 값 모두 TypeCode가 Boolean임을 확인할 수 있습니다.
예제 2: fr-FR 문화권 지정하기
이번에는 문화권을 프랑스(fr-FR)로 변경하여 동일한 코드를 실행해 보겠습니다.
using System;
using System.Globalization;
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());
// 문화권 변경
CultureInfo provider = new CultureInfo("fr-FR");
Console.WriteLine("Value1 = "+val1.ToString(provider));
Console.WriteLine("Value2 = "+val2.ToString(provider));
}
}출력 결과
실행 결과는 다음과 같습니다.
Value1 (Hashcode) = 1 Value1 (TypeCode) = Boolean Value2 (Hashcode) = 0 Value2 (TypeCode) = Boolean Value1 = True Value2 = False
핵심 정리
두 예제의 출력 결과가 완전히 동일한 것을 통해 알 수 있듯이, Boolean.ToString(IFormatProvider) 메서드는 provider 매개변수에 어떤 문화권을 전달하더라도 결과에 영향을 주지 않습니다. true는 항상 "True", false는 항상 "False"로 변환되기 때문입니다. 따라서 이 메서드는 문화권에 종속되지 않는 일관된 문자열 변환이 필요할 때 유용하게 활용할 수 있습니다.