ToString()默认CultureInfo

时间:2013-04-04 18:42:29

标签: c# 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 个答案:

答案 0 :(得分:22)

如果您未指定文化,

ToString将使用CurrentCulture,而非InvariantCulture

答案 1 :(得分:5)

ToString()在未指定时使用CurrentCulture

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

  

“返回值使用通用数字格式进行格式化   说明符(“G”)和当前文化的NumberFormatInfo。“

答案 2 :(得分:2)

所有内置类和数字类型的ToString实现默认使用CultureInfo.CurrentCulture culture,即当前线程使用的文化。

这意味着当前文化(以及您的字符串格式化和解析功能)将因系统而异。在我看来,这是一个设计错误,它在过去曾经被人咬过。它应默认为InvariantCulture并在系统间提供相同的结果,但不幸的是它没有。