Ответ 1
ToString
будет использовать CurrentCulture
, а не InvariantCulture
, если вы не укажете культуру.
Думаю, я понимаю использование CultureInfo.
Если я делаю просто:
const int a = 5;
string b = a.ToString();
он равен:
const int a = 5;
string b = a.ToString(CultureInfo.InvariantCulture);
Другими словами, использует ли ToString() по умолчанию InvariantCulture или CurrentCulture или ни один?
ToString
будет использовать CurrentCulture
, а не InvariantCulture
, если вы не укажете культуру.
ToString() использует CurrentCulture, если не указан
Смотрите: http://msdn.microsoft.com/en-us/library/6t7dwaa5(v=vs.85).aspx
"Возвращаемое значение форматируется с общим цифровым форматом specifier (" G ") и NumberFormatInfo для текущей культуры."
Реализация всех встроенных классов и числовых типов ToString
использует по умолчанию CultureInfo.CurrentCulture
культуру, культуру, используемую текущий поток.
Это означает, что текущая культура (и, следовательно, ваши функции форматирования и разбора строк) будет отличаться от одной системы к другой. По-моему, это ошибка дизайна, и она укусила людей в прошлом. Он должен был по умолчанию InvariantCulture
и давать одинаковые результаты в разных системах, но, к сожалению, этого не делает.