18

我想我了解 CultureInfo 的用法。

如果我做简单:

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

是否等于:

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

换句话说, ToString() 默认使用InvariantCultureCurrentCulture还是两者都不使用?

4

3 回答 3

28

ToString将使用CurrentCulture,而不是InvariantCulture如果您不指定文化。

于 2013-04-04T18:43:13.453 回答
5

ToString() 在未指定时使用 CurrentCulture

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

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

于 2013-04-04T18:43:15.933 回答
4

ToString默认情况下,所有内置类和数字类型的实现都使用当前线程使用的文化文化CultureInfo.CurrentCulture

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

于 2013-04-04T18:46:46.280 回答