我正在阅读比较字符串的最佳实践并看到这两点:
不幸的是,没有解释为什么不推荐这样做。
有人可以解释为什么使用
CompareTo()
来检查相等性不好吗?
CompareTo
的文档,它提供了一个比较示例,该比较对于应该平等排序但不相等的两个字符串返回 0
。如果我们稍微修改一下示例:
using System;
public class Program
{
public static void Main()
{
string s1 = "ani\u00ADmal";
string o1 = "animal";
Console.WriteLine("Comparison of '{0}' and '{1}': {2}",
s1, o1, s1.CompareTo(o1));
Console.WriteLine("Are equal? '{0}'", s1.Equals(o1));
}
}
结果:
Comparison of 'animal' and 'animal': 0
Are equal? 'False'
当然,避免它们的另一个原因是,如果您想测试是否相等,则使用
Equals
可以更清楚地编码您的
意图。