是否有任何全球化问题使用'=='运算符和string.Equals()方法来比较字符串?

时间:2012-11-07 06:07:51

标签: c# .net vb.net

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

2 个答案:

答案 0 :(得分:5)

使用String.Equals,您可以使用StringComparison.InvariantCultureIgnoreCaseStringComparison.InvariantCulture,使用==您无法执行此操作。

您应该看到:The Turkish İ Problem and Why You Should Care

同一篇文章中的代码段:

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();
    }
}

以上将使用false运算符

返回==进行相等比较

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

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

,结果为true

答案 1 :(得分:2)

==运算符以及.Equals(string).Equals(object)重载都使用序数字符串比较,并且它与文化无关。

这与文化相关的.CompareTo不同。