.net - 文化和 UICulture 有什么区别?

标签 .net culture uiculture

有人能给我更多关于 Culture 之间区别的信息吗?和 UICulture在.NET 框架内?他们做什么以及何时使用什么?

最佳答案

Culture影响文化相关数据(日期、货币、数字等)的呈现方式。下面是几个例子:

var date = new DateTime(2000, 1, 2);
var number = 12345.6789;

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
Console.WriteLine(date); // 02.01.2000 00:00:00
Console.WriteLine(number.ToString("C")); // 12.345,68 €

Thread.CurrentThread.CurrentCulture = new CultureInfo("fr-CA");
Console.WriteLine(date); // 2000-01-02 00:00:00
Console.WriteLine(number.ToString("C")); // 12 345,68 $

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
Console.WriteLine(date); // 1/2/2000 12:00:00 AM
Console.WriteLine(number.ToString("C")); // $12,345.68

文化也以同样的方式影响用户输入的解析:
const string numberString = "12.345,68";
decimal money;

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // OK!

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // FormatException is thrown, TryParse would return false

请注意解析成功但结果与您预期不同的情况。
const string numberString = "12.345";
decimal money;

Thread.CurrentThread.CurrentCulture = new CultureInfo("de-DE");
money = decimal.Parse(numberString); // 12345

Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US");
money = decimal.Parse(numberString); // 12.345, where the . is a decimal point
UICulture影响应用程序将加载到哪个资源文件 (Resources.lang.resx)。

因此,要加载德语资源(可能是本地化文本),您需要设置 UICulture到德国文化并显示德国格式(对加载的资源没有任何影响),您可以设置 Culture .

关于.net - 文化和 UICulture 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9507582/

相关文章:

c# - 首次启动应用程序时显示对话框

c# - 检索 X509Certificate2 对象的颁发者

c# - 在 Windows 中查询用户 session

c# - 当 culture 在 asp.net webform 中设置为 ar-AE 时,7 月的月份显示错误

asp.net-mvc - MVC 3 为多文化网站构建动态元关键字元描述功能

c# - 通过 CSharpCodeProvider 编译时出现编译器错误

c# - 解析后十进制不显示组(千)分隔符

c# - MissingManifestResourceException 是什么意思以及如何修复它?

c# - 我可以从文化代码中获取文本方向吗?

powershell - 完全更改当前 PowerShell session 的语言(包括文化)