2

我正在尝试找出程序的语言并将我的字符串更改为这种语言

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

即使culture 和currentCulture 的值相同,if语句也不起作用,并且我的msg 字符串没有改变。

这是我的调试结果

名称--值--类型

文化 -- {zh} -- System.Globalization.CultureInfo

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

4

2 回答 2

1

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

这段小代码将打印False

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

您可以比较一个属性,Name并且LCID看起来是不错的候选人。

于 2013-07-26T08:09:23.930 回答
0

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

CultureInfo是一个类,所以它是一个引用类型。当你比较两个不同的引用时==,它总是返回false。例如,您可以尝试根据它们的CultureInfo.Name属性来比较它们。喜欢;

if(currentCulture.Name == culture.Name)
{
   msg = "Some words";
}
于 2013-07-26T07:50:34.053 回答