还有为什么我会看到不同的数字格式。机器之间的电流正模式。它是特定于框架还是与操作系统相关?
您使用的覆盖(GetCultureInfo)不应受到用户首选项的影响。根据
MSDN
,特定于区域性的值本质上是不稳定的。我认为您看到的更多的是操作系统,可能会在Windows更新之间发生变化。如果您需要一些稳定的东西,例如在单元测试中,不变量或自定义区域性是最好的选择。
NumberFormatInfo和动态数据
NumberFormatInfo类提供的用于格式化数值的区域性特定数据是动态的,就像CultureInfo类提供的区域性数据一样。您不应该对与特定CultureInfo对象关联的NumberFormatInfo对象的值的稳定性做出任何假设。只有不变区域性及其关联的NumberFormatInfo对象提供的数据是稳定的。其他数据可以在应用程序会话之间更改,甚至在单个会话内更改,原因如下:
-
系统更新
.文化偏好(如货币符号或货币格式)随时间而变化。发生这种情况时,Windows Update会包括对特定区域性的NumberFormatInfo属性值的更改。
-
替换培养基
。CultureAndRegionInfoBuilder类可用于替换现有区域性的数据。
-
对属性值的级联更改
。许多与区域性相关的属性可以在运行时更改,这反过来会导致NumberFormatInfo数据更改。例如,可以通过编程或通过用户操作更改当前区域性。发生这种情况时,CurrentInfo属性返回的NumberFormatInfo对象将更改为与当前区域性关联的对象。
-
用户首选项
。应用程序的用户可以通过“控制面板”中的“区域和语言”选项覆盖与当前系统区域性关联的某些值。例如,用户可以选择不同的货币符号或不同的十进制分隔符符号。如果文化信息。UseUserOverride属性设置为true(其默认值),NumberFormatInfo对象的属性也会从用户设置中检索。