C# CompareTo 和 String.Compare

Posted hao_1234_1234

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# CompareTo 和 String.Compare相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections;

namespace Test1
{
    class Program
    {
        static void Main(string[] args)
        {

            string s1 = "abc";
            string s2 = "abc";
            string s3 = "abcdfg";
            string s4 = "1bcdfg";
            string s5 = "cdfg";
            Console.WriteLine(s1.CompareTo(s2));
            Console.WriteLine(s1.CompareTo(s3));
            Console.WriteLine(s1.CompareTo(s4));
            Console.WriteLine(s1.CompareTo(s5));


            //String.Compare同上,F12可以看到它们继承与String。

            //string s1 = "abc";
            //string s2 = "abc";
            //string s3 = "abcdfg";
            //string s4 = "1bcdfg";
            //string s5 = "cdfg";
            //Console.WriteLine(String.Compare(s1, s2));
            //Console.WriteLine(String.Compare(s1, s3));
            //Console.WriteLine(String.Compare(s1, s4));
            //Console.WriteLine(String.Compare(s1, s5));

            Console.ReadKey();

            /*
            C#中compareTo()的返回值是-1、0、1,
            先比较两者首字符的大小(按ASCII码顺序)。
            一、s1首字符和参数s2的首字符不等:
            1、如果s1首字符的ASCII码大于s2首字符的ASCII码,则输出1;
            2、如果s1首字符的ASCII码小于s2首字符的ASCII码,则输出-1;
            结束。
            二、如果s1首字符和参数s2的首字符相等,则以s1第二个字符和参数s2的第二个字符做比较,以此类推。
            直到比较的字符或被比较的字符中有一方比较完了。
            1、字符串位数多的,输出1;
            2、字符串位数少的,输出-1.
            3、两者所有字符串完全相同,输出0.

            */
        }
    }
}

 

以上是关于C# CompareTo 和 String.Compare的主要内容,如果未能解决你的问题,请参考以下文章

double.NaN 和 double.NegativeInfinity 的 CompareTo 行为

如何在 C# 中比较两个版本?

C#中的IComparable和IComparer接口

C#中的IComparable和IComparer接口

C# 字符串比较

SonarQUBE 和 compareTo 日期