IComparable接口实现自定义类型的排序

 

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 = }, new person() { Name = "laohuan", Age = }, new person() { Name = "lihong", Age = }, new person() { Name = "qinqi", Age = } }; 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 ;
}
else if (s.Age == this.Age)
{
return ;
}
else
{
return -;
}
}

测试完后的效果和第一次的一样,就不发了。
这样,我们就简单的实现了自定义类型的排序。这只是我初步学习的结果,如果有什么不足或者错误的地方,恳请各位指出

最新文章

  1. asp.net mvc ajax FileUpload
  2. 算法与数据结构之选择排序(C语言)
  3. paip.解决 数据库mysql增加列 字段很慢添加字段很慢
  4. SQL获取本周销售总数
  5. html的视频插件 (转)
  6. ecshop--加载初始化文件
  7. json处理三部曲之第二曲:利用Jackson处理json
  8. (一)初识Redis
  9. java的多态性
  10. [转]jQuery 选择器和dom操作
  11. js的this到底是什么意思
  12. ODOO区分测试库和正式库的简单方法
  13. 《mysql必知必会》学习_第10章_20180731_欢
  14. Python2.7-heapq
  15. Windows 10无法使用debug的解决方案
  16. 放入MP3的文件夹显示一些没用的标题,艺术家,唱片集怎么办?
  17. Qt 反射
  18. [BZOJ5252][八省联考2018]林克卡特树lct
  19. Gdb调试工具/ Makfile项目管理
  20. centos7上面安装MySQL

热门文章

  1. ajax同时提交表单且包含文件
  2. Mean, Median, Mode, Range, and Standard Deviation
  3. salt 安装kubernetes集群3节点
  4. 如何在ssh远程linux服务器时不需要输入密码
  5. sshd修改监听端口
  6. 【codeforces 67A】Partial Teacher
  7. Qt之自定义布局管理器(QCardLayout)
  8. Android与设计模式——单例(Singleton)模式
  9. UVALive 6084 Happy Camper(数学题)
  10. hdu_1166,线段树单点更新