숫자, 날짜 및 시간이 문자열로 형식화되거나 문자열에서 구문 분석 될 때 문화권을 사용하여 수행 방식을 결정합니다. 예를 들어 지배적 인 en-US
문화에서는 다음과 같은 문자열 표현이 있습니다.
- 1,000,000.00-두 자리 분수의 백만
- 1/29/2013-이 게시물의 날짜
내 문화권 ( da-DK
)에서 값은 다음 문자열 표현을 갖습니다.
- 1.000.000,00-두 자리 분수로 백만
- 29-01-2013-이 게시물의 날짜
Windows 운영 체제에서 사용자는 숫자 및 날짜 / 시간 형식을 사용자 정의하고 운영 체제의 문화와 다른 문화를 선택할 수도 있습니다. 사용 된 형식은 사용자가 선택해야하는 방식입니다.
당신이 값을 포맷 할 때 그래서 예를 들어 사용하여 사용자에게 표시 할 ToString
또는 String.Format
또는 사용하여 문자열에서 구문 분석 DateTime.Parse
또는 Decimal.Parse
기본값은을 사용하는 것입니다CultureInfo.CurrentCulture
. 이를 통해 사용자는 서식을 제어 할 수 있습니다.
그러나 많은 문자열 형식 및 구문 분석은 실제로 응용 프로그램과 사용자간에 교환되는 문자열이 아니라 응용 프로그램과 일부 데이터 형식 (예 : XML 또는 CSV 파일)간에 교환되는 문자열입니다. 이 경우 CultureInfo.CurrentCulture
다른 문화권으로 서식 지정 및 구문 분석을 수행하면 중단 될 수 있으므로 사용하지 않으려 고합니다 . 이 경우 사용하려는 CultureInfo.InvariantCulture
(en-US
문화를 . 이렇게하면 문제없이 값을 왕복 할 수 있습니다.
ReSharper에서 당신에게 경고를 제공하는 이유는 일부 응용 프로그램의 작가가 의도하지 않은 결과가 발생할 수도 구별 인식하지 못하고 있지만 그들이 있기 때문에이 문제를 발견하지 것입니다 CultureInfo.CurrentCulture
IS en-US
같은 동작 등이있다CultureInfo.InvariantCulture
. 그러나 응용 프로그램을 다른 문화권에서 사용하는 즉시 하나의 문화권을 사용하여 서식을 지정하고 다른 문화권을 사용하여 응용 프로그램을 구문 분석 할 수 있습니다.
요약하자면 다음과 같습니다.
- 사용하다
CultureInfo.CurrentCulture
사용자 문자열을 형식화하거나 구문 분석하는 경우 (기본값)을 .
- 사용하다
CultureInfo.InvariantCulture
소프트웨어에서 구문 분석 할 수있는 문자열을 형식화하거나 구문 분석하는 경우 .
- 사용자가 형식 지정 및 구문 분석 방법을 제어 할 수 없으므로 특정 국가 문화를 거의 사용하지 마십시오.