IComparable与数组排序

如果对数组使用自定义类,就必须实现ICommparable接口,这个接口只定义了一个CompareTo(),如果要比较的对象相等,该方法返回0,如果该实例应排在参数对象的前面,该方法就返回小于0的值,如果该实例应该排在参数对象的后面,该方法就返回大于0的值。

 1 public class Person:IComparable<Person>
 2     {
 3         public int Number { get; set; }
 4         public string Name { get; set; }
 5 
 6 
 7         public int CompareTo(Person other)
 8         {
 9             if (other == null) return 1;
10             int result = this.Number.CompareTo(other.Number);
11             if (result == 0)
12             {
13                 result = this.Name.CompareTo(other.Name);
14             }
15             return result;
16 
17         }
18     }
19  static void Main(string[] args)
20         {  
21             Person[] Persons = { new Person {Name="hujintao",Number=2 }, new Person {Name="wenjiabao",Number=1 }, new Person {Name="jiangzhemin",Number=3 } };
22             Array.Sort(Persons);
23             foreach (Person item in Persons)
24             {
25                 Console.WriteLine(item.Number);
26             }
27 
28             int[] i = { 2, 1, 3 };
29             Array.Sort(i);
30             foreach (int item in i)
31             {
32                 Console.WriteLine(item);
33             }
34             Console.ReadKey();
35         }

 

 

posted @ 2012-11-03 17:11  转身就是一辈子  阅读(108)  评论(0)    收藏  举报