日期:2014-05-18  浏览次数:20961 次

谁能详细解析下C#中的CompareTo()和Compare()的用法
下面是我编写参照学习资料编写的一个程序,请详细说下CompareTo()它是点样进行排序的,还有Compare()详细工作原理,已经没什么分可给了,麻烦各位可以为我解答,小弟在此谢过!

  class Person:IComparable 
  {
  public string Name;
  public int Age;
  public Person(string name, int age)
  {
  Name = name;
  Age = age;
  }
  public int CompareTo(object obj)
  {
  Person otherPerson = obj as Person;
  return this.Age - otherPerson.Age;
  }
  }

  class PersonComparerName : IComparer
  {
  public static IComparer Default = new PersonComparerName();
  public int Compare(object x, object y)
  {
  return Comparer.Default.Compare(((Person)x).Name, ((Person)y).Name);
  }
  }

  class Program
  {
  static void Main(string[] args)
  {
  ArrayList list = new ArrayList();
  list.Add(new Person("abc", 22));
  list.Add(new Person("aad", 21));
  list.Add(new Person("aba", 23));
  list.Add(new Person("bcg", 27));

  list.Sort();//我知道这里对list按age大小进行了排序,请解释这是点样进行的
  //这里进行了list按字母进行排序,也请详细解释下,就它两工作原理我不太明白
  list.Sort(PersonComparerName.Default);
  for (int i = 0; i <= list.Count - 1; i++)
  {
  Console.Write("{0} {1} ", ((Person)list[i]).Name, (list[i] as Person).Age);
  }
  Console.ReadKey();
  }
  }

------解决方案--------------------
想知道内幕,可以用Reflector反编译.net,去研究源码