我想我理解CultureInfo的用法。
如果我做的很简单:
const int a = 5;
string b = a.ToString();
等于:
const int a = 5;
string b = a.ToString(CultureInfo.InvariantCulture);
换句话说,ToString()默认使用 InvariantCulture 或 CurrentCulture ,还是不使用?
答案 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
并在系统间提供相同的结果,但不幸的是它没有。