为什么不建议使用 CompareTo() 检查相等性?

问题描述 投票:0回答:1

我正在阅读比较字符串的最佳实践并看到这两点:

  • 使用 String.Compare 和 String.CompareTo 方法对字符串进行排序,而不是检查是否相等。
  • 不要使用 String.Compare 或 CompareTo 方法的重载,并测试返回值是否为零来确定两个字符串是否相等。

不幸的是,没有解释为什么不推荐这样做。

有人可以解释为什么使用

CompareTo()
来检查相等性不好吗?

.net string string-comparison
1个回答
0
投票

如果您查看

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 'ani­mal' and 'animal': 0 Are equal? 'False'

当然,避免它们的另一个原因是,如果您想测试是否相等,则使用 
Equals

可以更清楚地编码您的

意图

© www.soinside.com 2019 - 2024. All rights reserved.