Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是什么控制.NET中的CurrencyPositivePattern_C#_.net_Locale - Fatal编程技术网

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.