//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());