CurrentUICulture和新创建的CultureInfo实例

本文关键字:CultureInfo 实例 创建 新创建 CurrentUICulture | 更新日期: 2023-09-27 18:25:04

我正试图找出程序的语言,并更改此语言的字符串

CultureInfo culture = new CultureInfo("en");
CultureInfo currentCulture = Thread.CurrentThread.CurrentUICulture;
string msg="";
if (currentCulture == culture)
{
    msg = "Some words";
}

即使区域性和currentCulture的值相同,if语句也不起作用,我的消息字符串也没有更改。

这是我的调试结果

名称--值--类型

区域性--{en}--System.Globalization.CultureInfo

currentCulture--{en}--System.Globalization.CultureInfo

CurrentUICulture和新创建的CultureInfo实例

CultureInfo是一个没有覆盖Equals()的引用类型,因此两个单独的实例总是不相等的。

这段小代码将打印错误

  var c1 = new CultureInfo("en");
  var c2 = new CultureInfo("en");
  Console.WriteLine(c1 == c2);

你可以在一个属性上进行比较,NameLCID似乎是不错的候选者。

您的区域性可以表示为en-Us。首先调试代码。这可能就是问题所在。

CultureInfo是一个类,因此它是引用类型。当您将两个不同的引用与==进行比较时,它总是返回false。例如,您可以尝试根据它们的CultureInfo.Name属性对它们进行比较。喜欢

if(currentCulture.Name == culture.Name)
{
   msg = "Some words";
}