C# IComparable 与 IComparer<T>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | //IComparable的排序使用 public class Student : IComparable { private string name; private int age; public string Name { get { return name; } } public int Age { get { return age; } } public Student() { } public Student( string name, int age) { this .name = name; this .age = age; } public override string ToString() { return $ "姓名:{this.name} 年龄:{this.age}" ; } public int CompareTo( object obj) { Student student = obj as Student; if ( this .age == student.Age) { return 0; } else if ( this .age > student.Age) { return 1; } else { return -1; } } //调用方法 但存在拆箱装箱 // List<Student> studentsList = new List<Student>() // { // new Student("a", 14), // new Student("b", 13), // new Student("c", 12), // new Student("d", 11), // new Student("e", 10), // }; // studentsList.Sort(); //下面我们使用IComparer<T> 实现对一个构造类的排序 不存在拆箱装箱 public class StudentSort : IComparer<Student> { public int Compare(Student x, Student y) { return x.age.CompareTo(y.age); } } //调用方式 // List<Student> studentsList = new List<Student>() // { // new Student("a", 14), // new Student("b", 13), // new Student("c", 12), // new Student("d", 11), // new Student("e", 10), // }; // studentsList.Sort(new Student.StudentSort()); |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程