문제

실제로 제공해야한다고 생각하십니까? 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.

아니요, 문자열에 문화에 따라 렌더링 해야하는 소수점 분리기, 통화 등과 같은 문화 별 요소가 포함되어 있지 않으면 문화를 지정할 필요가 없습니다.

응용 프로그램의 현지화 (세계화)에 관심이있는 경우 특히 유용합니다. 즉, 앱이 여러 언어 및 문화 별 형식을 지원하려면이를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top