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
и дают одинаковые результаты для всех систем, но, к сожалению, это не так.