CompareTo(Object) 方法的实现必须返回有三个值之一
如下表中所示。
返回值 | 参数比较 |
---|---|
大于0 | x>y |
等于0 | x=y |
小于0 | x<y |
首先定义一个用于测试的Person类
class person : IComparable { public string Name { set; get; } public int Age { set; get; } public override string ToString() { return "name: " + this.Name + " " + "age: " + this.Age; } }
接着使用第一种方法:CompareTo(Object) 方法来实现IComparable接口
public int CompareTo(object obj) { person s = obj as person; return this.Age.CompareTo(s.Age); }
接着,进行第一次排序测试
class Program { static void Main(string[] args) { person[] ps = new person[] { new person() { Name = "gaoning", Age = 21 }, new person() { Name = "laohuan", Age = 20 }, new person() { Name = "lihong", Age = 22 }, new person() { Name = "qinqi", Age = 19 } }; Array.Sort(ps); foreach (var item in ps) { Console.WriteLine(item.ToString()); } Console.ReadKey(); } }
得出的结果:
可见,我们已经实现了自定义类型的排序。
咱们用另外一种写法来实现
public int CompareTo(object obj) { person s = obj as person; if (s.Age > this.Age) { return 1; } else if (s.Age == this.Age) { return 0; } else { return -1; } }
测试完后的效果和第一次的一样,就不发了。
这样,我们就简单的实现了自定义类型的排序。这只是我初步学习的结果,如果有什么不足或者错误的地方,恳请各位指出。