时间:2019-03-17 标签:c#CompareTo()Method

Pro*_*Log 2 c# string methods

我试图理解 C# 中的 CompareTo() ,下面的示例让我比以往更加困惑。有人能帮我理解为什么第三个变体的结果是 1 吗?“Hello wor d d”句子中的第二个单词与 str1“Hello wor l d”不同,那么为什么我得到 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"));

    }
Run Code Online (Sandbox Code Playgroud)

结果:-1, 0, 1

Pet*_*gan 5

如果字符串匹配,则 CompareTo() 给出 0。如果不匹配,则根据字母顺序第一个出现的字符串给出正数或负数。

在您的示例中,结果 1 和 -1 都表示字符串不匹配,而 0 表示字符串匹配。

看起来您正在使用它来确定相等性而不是排序。如果是这种情况,那么您应该改用Equals()。

  • 嗯,它给出一个正数或负数,具体取决于哪个先出现。你永远不应该假设结果总是 -1、0 或 1。 (4认同)