我试图理解 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
如果字符串匹配,则 CompareTo() 给出 0。如果不匹配,则根据字母顺序第一个出现的字符串给出正数或负数。
在您的示例中,结果 1 和 -1 都表示字符串不匹配,而 0 表示字符串匹配。
看起来您正在使用它来确定相等性而不是排序。如果是这种情况,那么您应该改用Equals()。