谁能详细解析下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,去研究源码