C# 是什么控制.NET中的CurrencyPositivePattern
跑步时C# 是什么控制.NET中的CurrencyPositivePattern,c#,.net,locale,C#,.net,Locale,跑步时 var x = 10.0M; Console.WriteLine(typeof(Program).Assembly.ImageRuntimeVersion); var culture = System.Globalization.CultureInfo.GetCultureInfo("da-DK"); Console.WriteLine(culture.NumberFormat.CurrencyPositivePattern); Console.WriteLine(x.ToStri
var x = 10.0M;
Console.WriteLine(typeof(Program).Assembly.ImageRuntimeVersion);
var culture = System.Globalization.CultureInfo.GetCultureInfo("da-DK");
Console.WriteLine(culture.NumberFormat.CurrencyPositivePattern);
Console.WriteLine(x.ToString("C", culture));
当使用不同的框架版本时,我们看到了差异
v2.0.5072
2
kr 10,00
vs
还有,为什么我会在机器之间看到不同的NumberFormat.CurrencyPositivePattern。它是特定于框架还是与操作系统相关
vs检查控制面板>时钟、语言和地区>更改日期、时间或数字格式>其他设置 还有,为什么我会在机器之间看到不同的NumberFormat.CurrencyPositivePattern。它是特定于框架还是与操作系统相关 您使用的覆盖(GetCultureInfo)不应受用户首选项的影响。根据研究,特定于文化的价值观本质上是不稳定的。我认为你看到的更多的是一个操作系统的东西,可能会在Windows更新之间发生变化。如果您需要一些稳定的东西,例如在单元测试中,不变量或自定义区域性是最好的选择 NumberFormatInfo和动态数据 NumberFormatInfo类提供的用于格式化数值的区域性特定数据是动态的,就像CultureInfo类提供的区域性数据一样。您不应该对与特定CultureInfo对象关联的NumberFormatInfo对象的值的稳定性做出任何假设。只有不变区域性及其关联的NumberFormatInfo对象提供的数据是稳定的。由于以下原因,其他数据可以在应用程序会话之间更改,甚至在单个会话内更改:
- 系统更新。文化偏好(如货币符号或货币格式)随时间而变化。发生这种情况时,Windows Update会包括对特定区域性的NumberFormatInfo属性值的更改
- 替换文化。CultureAndRegionInfoBuilder类可用于替换现有区域性的数据
- 对属性值的级联更改。许多与区域性相关的属性可以在运行时更改,从而导致NumberFormatInfo数据更改。例如,可以通过编程或用户操作更改当前区域性。发生这种情况时,CurrentInfo属性返回的NumberFormatInfo对象将更改为与当前区域性关联的对象
- 用户首选项。应用程序的用户可以通过“控制面板”中的“区域和语言”选项覆盖与当前系统区域性关联的某些值。例如,用户可以选择不同的货币符号或不同的十进制分隔符符号。如果CultureInfo.UseUserOverride属性设置为true(其默认值),则还会从用户设置中检索NumberFormatInfo对象的属性
全部为“是”,加上用户的设置。您还可以在4+中修改CultureInfo对象。而最早支持的.NET版本是4.5.2。NET2必须实现自己的本地化规则,这给它带来了负担。这是必要的,因为它仍然支持古老的Windows版本,如Win98和2000。在.NET4.0中修复,它现在可以使用操作系统支持进行本地化。包括在“控制面板”>“语言”中配置的用户首选项。我们开发机器上的默认设置各不相同,并且与生产环境不同。@HansPassant,根据MSDN,GetCultureInfo不反映任何用户覆盖,适用于服务器应用程序:msdn.microsoft.com/en-us/library/yck8b540。aspx@Dmitry:那么您如何解释这两台计算机之间的差异?根据MSDN,GetCultureInfo不反映任何用户覆盖,适用于服务器应用程序:
v4.0.30319
3
10,00 kr.