Console.WriteLine(String.Compare(A, a));本句执行的结果为1,我很是不解,我原以为会输出-1。
首先该方法用字符串A和字符串a比较,如果字符串A小于字符串a,应返回一个负整数,这是该方法的解释。其次该方法是逐字符比较,比较到最后,遇到A和a不等,且A按理说应该小于a,根据ascii码表。
请老师们指点。
using System;namespace _03_16
{
    class Class_03_16
    {
        public static void Main(String[] args)
        {
            string a = "string a";
            string A = "string A";
            string b = "string b";            Console.WriteLine(String.CompareOrdinal(b, A));
            Console.WriteLine(String.CompareOrdinal(A, a));
            Console.WriteLine(String.CompareOrdinal(b, a));            Console.WriteLine(String.Compare(b, A));//输出1
            Console.WriteLine(String.Compare(A, a));//输出1,该方法是逐字符比较,最后应该输出-1才对。
            Console.WriteLine(String.Compare(b, a));
            Console.WriteLine(String.Compare(a, A,true));
        }
    }
}

解决方案 »

  1.   

    String 类有四种方法:Compare( )、CompareTo( )、CompareOrdinal()、Equals( )。
    Compare( )方法是CompareTo( )方法的静态版本。只要使用“=”运算符,就会调用Equals( )方法,的以Equals( )方法与“=”是等价的。CompareOrdinal( )方法对两个字符串比较不考本地语言与文件
    字符串比较函数 
      

  2.   


    //这是字符串比较和其他字符比较方法是不一样的,不是按ASCII码,其字母顺序是aAbBcCdD...进行的,
    所以你明白了
      

  3.   

    msdn+自己测试是最好的理解方式。
      

  4.   

    根据从msdn上查的资料,string的排序是分为三种:单词排序(考核区域性),字符串排序,序号排序。
    string.compare被归为考虑区域性的一种排序比较。
    CompareOrdinal则是序号排序比较,直接将string中的每个字符逐个换成char对象,去进行比较。
    所以作为一个还没有学到太多内部函数知识的初学者,1楼和2楼的回复,对于我来说,是很难理解的。
    3楼没有给出直接答案,而是指了一条路,顺着这条路,找到了一些更深入的答案,当然这些答案对于我目前来说,都很抽象,难以理解。不过最好还是谢谢三位的关注。开始散分。