经常遇到要对一个对象List排序的要求,我觉得以下是最方便的方法。
核心代码
主要是实现System.Collections.IComparer这个接口
完整示例
备注
里面Person我用的是struct没有用class。关于stuct和class的区别为:
- 结构体中声明的字段无法赋予初值,类可以。
- 结构体的构造函数中,必须为结构体所有字段赋值,类的构造函数无此限制。
- 结构是值类型,它在栈中分配空间;而类是引用类型,它在堆中分配空间,栈中保存的只是引用。
- 结构类型直接存储成员数据,让其他类的数据位于堆中,位于栈中的变量保存的是指向堆中数据对象的引用。
- 类的对象是存储在堆空间中,结构存储在栈中。堆空间大,但访问速度较慢,栈空间小,访问速度相对更快。故而,当我们描述一个轻量级对象的时候,结构可提高效率,成本更低。当然,这也得从需求出发,假如我们在传值的时候希望传递的是对象的引用地址而不是对象的拷贝,就应该使用类了。