cultureinfo.currentCulture는 String.Format ()에 정말로 필요합니까?
-
19-08-2019 - |
문제
실제로 제공해야한다고 생각하십니까? IFormatProvider
방법에서 String.Format(string, object)
?
전체 변형을 작성하는 것이 좋습니다
String.Format(CultureInfo.CurrentCulture, "String is {0}", str);
아니면 그냥
String.Format("String is {0}", str);
?
해결책
일반적으로 생성중인 문자열이 현재 사용자의 문화 (예 : 레지스트리 또는 파일)와 무관 한 방식으로 지속되면 불변의 배양을 사용하려고합니다.
UI에 현재 사용자에게 제공되는 문자열에 CurrentCulture를 사용하려고합니다 (Forms, Reports).
미묘한 버그가 발생할 수 있습니다.
CurrentCulture (iforMatprovider 인수가 생략 된 경우 기본값)를 명시 적으로 지정하는 것은 본질적으로 위의 것을 고려했으며 생성 된 문자열이 현재 사용자의 문화를 사용해야한다는 것을 보여주는 문서입니다. 그렇기 때문에 FXCOP가 iforMatprovider 인수를 지정 해야하는 이유입니다.
다른 팁
당신이 지정하지 않는 경우 IFormatProvider
(또는 동등하게 통과합니다 null
) 대부분의 인수 유형은 결국 다음에 따라 형식화 될 것입니다. CultureInfo.CurrentCulture
. 흥미로운 곳은 사용자 정의를 지정할 수 있다는 것입니다. IFormatProvider
이는 인수 서식에서 먼저 균열을 일으키거나 다른 컨텍스트에 따라 서식 문화를 무시할 수 있습니다.
주목하십시오 CultureInfo.CurrentCulture
리소스 선택이 아닌 인수 형식에 영향을 미칩니다. 리소스 선택은 제어합니다 CultureInfo.CurrentUICulture
.
아니요, 문자열에 문화에 따라 렌더링 해야하는 소수점 분리기, 통화 등과 같은 문화 별 요소가 포함되어 있지 않으면 문화를 지정할 필요가 없습니다.
응용 프로그램의 현지화 (세계화)에 관심이있는 경우 특히 유용합니다. 즉, 앱이 여러 언어 및 문화 별 형식을 지원하려면이를 사용해야합니다.