ToString() по умолчанию CultureInfo

Я думаю, что понимаю использование CultureInfo.

Если я делаю просто:

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

это равно:

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

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

3 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам