我想我了解 CultureInfo 的用法。
如果我做简单:
const int a = 5;
string b = a.ToString();
是否等于:
const int a = 5;
string b = a.ToString(CultureInfo.InvariantCulture);
换句话说, ToString() 默认使用InvariantCulture或CurrentCulture还是两者都不使用?
我想我了解 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
“返回值使用通用数字格式说明符 ("G") 和当前区域性的 NumberFormatInfo 进行格式化。”
ToString
默认情况下,所有内置类和数字类型的实现都使用当前线程使用的文化文化CultureInfo.CurrentCulture
。
这意味着当前的文化(以及因此您的字符串格式化和解析函数)将因系统而异。在我看来,这是一个设计错误,过去曾被人咬过。它应该默认InvariantCulture
并在整个系统中给出相同的结果,但不幸的是它没有。