1

==使用“ ”运算符和string.Equals()比较字符串的方法是否存在任何全球化问题?如果是的话,避免这种情况的解决方案是什么?

4

2 回答 2

5

With String.Equals, 你可以使用StringComparison.InvariantCultureIgnoreCaseor StringComparison.InvariantCulture, With==你不能那样做。

您应该看到:土耳其 İ 问题以及您应该关心的原因

来自同一篇文章的代码片段:

using System;
using System.Globalization;
using System.Threading;
internal class Program
{
    private static void Main(string[] args)
    {      
        Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR");
        const string input = "interesting";

        bool comparison = input.ToUpper() == "INTERESTING";

        Console.WriteLine("These things are equal: " + comparison);
        Console.ReadLine();
    }
}

以上将使用运算符返回 afalse进行相等比较==

您可以在上面的代码中尝试以下行

 bool Comparison2 = input.Equals("INTERESTING",
                                  StringComparison.InvariantCultureIgnoreCase);

结果将是true

于 2012-11-07T06:13:54.053 回答
2

==运算符和.Equals(string)and重载都.Equals(object)使用序号字符串比较,并且它与区域性无关。

这与.CompareTo文化依赖不同。

于 2012-11-07T06:13:05.427 回答