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

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

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

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

равно ли это :

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

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

3 ответов


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


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

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

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


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

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