CultureInfo.CurrentCulture에서 반환 한 CultureInfo 인스턴스가 기본값을 모두 갖고 있는지 또는 사용자가 사용자 지정했는지 여부를 어떻게 확인할 수 있는지 알고 싶습니다.사용자가 CurrentCulture를 사용자 정의했는지 여부를 감지하는 방법은 무엇입니까?
일부 LINQPad 스 니펫과 LINQPad 명령 줄 러너를 사용하여 테스트를 수행했습니다.
var ci = CultureInfo.CurrentCulture;
var dtf = ci.DateTimeFormat;
ci.Name.Dump("CultureInfo");
dtf.FullDateTimePattern.Dump("FullDateTimePattern");
dtf.LongDatePattern.Dump("LongDatePattern");
dtf.LongTimePattern.Dump("LongTimePattern");
나는 지역 대화 상자에서 내 형식으로 영어 (남아프리카 공화국)을 선택하고 내 조각은 다음을보고합니다.
E:\Junk>lprun CurrentCulture.linq
CultureInfo: en-ZA
FullDateTimePattern: dd MMMM yyyy hh:mm:ss tt
LongDatePattern: dd MMMM yyyy
LongTimePattern: hh:mm:ss tt
그런 다음 긴 날짜 형식을 변경하여 하루 중 첫 번째 0을 숨기고, 길고 짧은 시간은 24 시간으로 설정합니다. 스 니펫이 이제이를보고합니다.
문화권 이름이 동일하게 유지되지만 변경된 속성은 새 값을 표시합니다.
제 질문은 CurrentCulture에서 반환 한 문화권이 기본값 (이 경우 en-ZA)에서 변경되었는지 여부를 알려주는 단일 속성이나 메서드가 있는지 여부입니다. CultureInfo.UseUserOverride가 그 속성일지도 모른다고 생각했지만 두 경우 모두 true를 반환합니다.
"CurrentCulture"와 문화권 사이의 모든 필요한 값을 비교할 수 있다고 생각합니다. 문화권은 현재와 동일한 로케일에 대해 만듭니다. – Sinatr
왜? 이상적으로는 응용 프로그램이 사용자가 자신의 컴퓨터에 설정 한 문화권에 의존해서는 안됩니다. – Grzenio
예 @Sinatr, 재산을 비교할 수는 있지만 CultureInfo 클래스가 너무 풍부하여이 정보를 제공 할 수있을 것이라고 상상했습니다. –