string "g" 比string "G" 小?

guo_jianwen 2009-03-19 12:23:28
using System;

public class CompareToTest
{
public static void Main()
{


string g = "g";
string G = "G";


Console.WriteLine(g.CompareTo(G));
Console.ReadKey();
}


}
屏幕打印-1?这不就是说g比G的ASC值小吗?但我在VC中测试了一下,g比G大啊,难道C#和别的不一样?
...全文
89 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tweeger 2009-03-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 guo_jianwen 的帖子:]
using System;

public class CompareToTest
{
    public static void Main()
    {

     
        string g = "g";
        string G = "G";

   
        Console.WriteLine(g.CompareTo(G));
        Console.ReadKey();
    }

 
}
屏幕打印-1?这不就是说g比G的ASC值小吗?但我在VC中测试了一下,g比G大啊,难道C#和别的不一样?
[/Quote]
这里返回-1只是说g的字符排序位置在G的前面,和它们的ASC值没有关系。
guo_jianwen 2009-03-19
  • 打赏
  • 举报
回复
咱们讨伦String.CompareTo好不好!
wuyq11 2009-03-19
  • 打赏
  • 举报
回复
compareto用于值比较,如果参数字符串等于此字符串,则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。
guo_jianwen 2009-03-19
  • 打赏
  • 举报
回复
using System;

public class CompareToTest
{
public static void Main()
{

char strFirst = 'g';
char strSecond = 'G';
char strThird = 'a';
char strFourth = 'A';

Console.WriteLine(strFirst.CompareTo(strSecond));
Console.WriteLine(strThird.CompareTo(strFourth));


Console.ReadKey();
}


}

用char类型,这个程序输出的结果是32和32,难道char与string的CompareTo的机制很不一样?
guo_jianwen 2009-03-19
  • 打赏
  • 举报
回复
那它为什么要排在G前面?C/C++/JAVA为什么都排在G后面?能不能给解释下,
teapot 2009-03-19
  • 打赏
  • 举报
回复
默认情形下,的确是这样比较的。要想在字符串比较时使用字符序,必须指明CompareOptions.StringSort或者CompareOptions.Ordinal。
另,默认情形下的字母数字序号大致是:123456789aAbBcCdDeEfFgGhHiIjJkKlLmMnNoOpPqQrRsStTuUvVwWxXyYzZ

想来这样比较符合平时人们使用字符的习惯。

运用字符串比较方法,格外要注意的是CompareOptions.StringSort,事实上,它对标点符号来说是有权重的。
bluegeckoo 2009-03-19
  • 打赏
  • 举报
回复
CompareTo 的说明同 Compare
bluegeckoo 2009-03-19
  • 打赏
  • 举报
回复
String.Compare 方法提供了将当前字符串对象与另一个字符串或对象进行全面比较的方法。


重要说明:
Compare 方法主要用于对字符串排序。

110,536

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧