2013-04-04 1 views
11

Думаю, я понимаю использование CultureInfo.ToString() default CultureInfo

Если я просто:

const int a = 5; 
string b = a.ToString(); 

он равен:

const int a = 5; 
string b = a.ToString(CultureInfo.InvariantCulture); 

Другими словами, делает ToString() при использовании по умолчанию InvariantCulture или CurrentCulture или ни?

ответ

18

ToString будет использовать CurrentCulture, а не InvariantCulture если вы не указали культуру.

5

ToString() использует CurrentCulture если не указано

См: http://msdn.microsoft.com/en-us/library/6t7dwaa5(v=vs.85).aspx

"Возвращаемое значение имеет формат с общим числовым форматом спецификатора (" G ") и NumberFormatInfo для текущей культуры «.

2

ToString реализация всех встроенных классов и числовых типов используется по умолчанию CultureInfo.CurrentCulture culture, культура, используемой в текущем потоке.

Это означает, что текущая культура (и, следовательно, функции форматирования и разбора строки) будут отличаться от одной системы к другой. По-моему, это ошибка дизайна, и она укусила людей в прошлом. Он должен по умолчанию равен InvariantCulture и дает одинаковые результаты по всем системам, но, к сожалению, это не так.