Answers:
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
它会影响资源文件(参考资料。郎的.resx)将是由你的应用程序加载到。
因此,要加载德语资源(大概是本地化的文本),您将设置UICulture
为德语文化,并显示德语格式(对加载资源没有任何影响)Culture
。
CultureInfo
仅使用整个对象来确定资源文件的意义何在string
?(例如的Language
财产FrameworkElement
)
对于每个Web浏览器,UICulture属性可能会更改,而区域性保持不变。
文化值只能设置为特定的文化,例如en-US或en-GB。这样可以避免要求标识要用于en的正确货币符号,而en-US和en-GB具有不同的货币符号。用户可以在其浏览器中设置UI文化和文化。