CultureInfo.InvariantCulture是什么意思?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (40)

有一串这样的文字:

var foo = "FooBar";

想声明第二个字符串bar使其与我的第一个和第四个角色相等foo所以这样做:

var bar = foo[0].ToString() + foo[3].ToString();
var bar = foo[0].ToString(CultureInfo.InvariantCulture)
        + foo[3].ToString(CultureInfo.InvariantCulture);

这意味着什么,它会影响我的程序的运行方式吗?

提问于
用户回答回答于

并非所有的文化都使用相同的日期和十进制/货币值格式。

当你转换输入值这个问题将你(读)存储为字符串 DateTimefloatdoubledecimal。如果您尝试将上述数据类型格式化为字符串(写入)以进行显示或存储,则这也很重要。

用户回答回答于

ReSharper给出警告的原因是,一些应用程序编写人员不知道这种区别,这可能会导致意外的结果,但他们从未发现这一点,因为他们的CultureInfo.CurrentCultureen-US它的行为与CultureInfo.InvariantCulture...但是,一旦应用程序在另一种区域性中使用,而这种区域性有可能用于格式化,而将另一区域性用于解析,则应用程序可能会中断。

因此,总结一下:

  • 使用CultureInfo.CurrentCulture(默认值)如果正在格式化或解析用户字符串。
  • 使用CultureInfo.InvariantCulture如果您正在格式化或解析一个字符串,则应该由一段软件进行解析。
  • 很少使用特定的国家文化,因为用户无法控制格式化和解析的完成方式。

扫码关注云+社区