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