Csharp/C Sharp by API/System/IComparable

Материал из .Net Framework эксперт
Перейти к: навигация, поиск

implement IComparable

<source lang="csharp"> using System; using System.Collections; using System.Collections.Generic; using System.Text; class Person : IComparable {

   public string Name;
   public int Age;
   public Person(string name, int age) {
       Name = name;
       Age = age;
   }
   public int CompareTo(object obj) {
       if (obj is Person) {
           Person otherPerson = obj as Person;
           return this.Age - otherPerson.Age;
       } else {
           throw new ArgumentException(
              "Object to compare to is not a Person object.");
       }
   }

} class Program {

   static void Main(string[] args) {
       ArrayList list = new ArrayList();
       list.Add(new Person("A", 30));
       list.Add(new Person("B", 25));
       list.Add(new Person("B", 27));
       list.Add(new Person("E", 22));
       for (int i = 0; i < list.Count; i++) {
           Console.WriteLine("{0} ({1})",
              (list[i] as Person).Name, (list[i] as Person).Age);
       }
       list.Sort();
       for (int i = 0; i < list.Count; i++) {
           Console.WriteLine("{0} ({1})",
              (list[i] as Person).Name, (list[i] as Person).Age);
       }
   }

}

</source>