string a = "hello world!";
string b = "HELLO WORLD!";
int i = string.Compare(a,b);
Console.WriteLine("the return value of compare is {0}", i);字符串的比较不是按ascll码么?
h是 104
H 是72
为什么结果是-1呢?

解决方案 »

  1.   

    string.Compare 返回-1表示这两的字符串不相等。
      

  2.   

    string a = "hello world!";
    string b = "HELLO WORLD!";
    int i = string.Compare(a.ToLower(), b.ToLower());
    Console.WriteLine("the return value of compare is {0}", i);
    返回结果为0
      

  3.   

    该比较使用当前区域性设置获取区域性特定的信息,如大小写规则和各个字符的字母顺序。例如,区域性设置可以指定将某些字符的组合视为单个字符,或者用特殊方法比较大写和小写字符,或者字符的排列顺序取决于它前面或后面的字符。使用字排序规则执行比较。有关字、字符串和顺序排序的更多信息,请参见 System.Globalization.CompareOptions。
      

  4.   

    我以为你这个Compare函数是按大小写来比较的,而并不是你认为的按ascii码比较,如果你指定比较选项为StringComparison.Ordinal,那么结果就会是32,这个应该就是按照ascii码进行比较了
      

  5.   

    楼上说的有点道理,好像也只能这么解释了,可msdn上没什么不写清楚啊?
      

  6.   

    msdn上有写啊,我也是看了这几个函数的说明才这样认为的
      

  7.   

    最后问一句,到底String.Compare(string,string)的比较规则是什么???
      

  8.   

    String.Compare (String, String)  比较两个指定的 String 对象。
    String.Compare (String, String, Boolean) 比较两个指定的 String 对象,忽略或考虑它们的大小写。
    Compare (string strA,string strB)
    小于零 strA 小于 strB
    零 strA 等于 strB。
    大于零 strA 大于 strB。COPY FROM MSDN
     
     
      

  9.   

    大家好:
    我找到答案了:
    compare 比较的是两个字符串的词法,也就是在词典里的排序,而不是ASCII码。 
    它的比较规则是在词典里出现在前面的单词小于出现的后面的单词
    alonesword的答案最接近(msdn原话),但是没有讲明白,分数给你吧。