我正在尝试理解 C# 中的 CompareTo(),下面的示例让我比以往任何时候都更加困惑。有人能帮我理解为什么第三个变体的结果是 1 吗?句子“Hello wordd”中的第二个单词与 str1“Hello world”不同,那么为什么我得到 1?我不应该得到 -1 吗?
static void Main(string[] args)
{
string str1 = "Hello world";
Console.WriteLine(str1.CompareTo("Hello World"));
Console.WriteLine(str1.CompareTo("Hello world"));
Console.WriteLine(str1.CompareTo("Hello wordd"));
}
结果:-1, 0, 1
答案 0 :(得分:4)
如果字符串匹配,CompareTo() 给出 0。如果它们不匹配,它给出一个正数或负数,这取决于哪个字符串按字母顺序排在最前面。
在您的示例中,结果 1 和 -1 均表示字符串不匹配,而 0 表示字符串匹配。
看起来您正在使用它来确定相等性而不是排序。如果是这种情况,则应改用 Equals()
。
答案 1 :(得分:1)
String.CompareTo
方法将此实例与指定的 object
或 String
进行比较,并返回一个 integer
,指示此实例是否在先。
如果返回值小于零:此实例先于值。
如果返回值是零:此实例在排序顺序中与值具有相同的位置。
如果返回值大于零:此实例遵循值。 -要么- 值为空。