功能说明:
学生类包括成绩、科目和学号,请根据课程成绩grade将学生进行排序。
设计流程:
对Student类集成IComparable接口,实现CompareTo()方法,在客户端创建List,对List中的内容根据grade参数进行升序排列
关键源码:
//对Student类继承IComparable接口:
public class Student : IComparable
{
public double mygrade;
public string mysubject, myID;
public Student() { }
public Student(double grade, string subject, string id)
{
mygrade = grade;
mysubject = subject;
myID = id;
}
public int CompareTo(object? obj)
{
throw new NotImplementedException();
}
public int CompareTo(Student other)
{
return other.myID.CompareTo(myID);
}
}
//比较方法类:
class Stumygrade : IComparer<Student>
{
public int Compare(Student x, Student y)
{
if(x.mygrade < y.mygrade)
{
return x.mygrade.CompareTo(y.mygrade);
}
else
{
return 0;
}
}
}
//客户端:
internal class Program
{
private static void Main(string[] args)
{
Student[] students = new Student[5];
students[0] = new Student(50.0, "windows程序设计", "001");
students[1] = new Student(90.0, "windows程序设计", "002");
students[2] = new Student(100.0, "windows程序设计", "003");
students[3] = new Student(70.0, "windows程序设计", "004");
students[4] = new Student(80.0, "windows程序设计", "005");
List<Student> StuList = new List<Student>()
{students[0],students[1],students[2],students[3],students[4]};
Console.WriteLine("----------默认排序----------");
StuList.Sort();
foreach (Student item in StuList)
{
Console.WriteLine(item.mygrade + "\t" + item.mysubject + "\t" + item.myID);
}
Console.WriteLine("----------按成绩升序排序----------");
StuList.Sort(new Stumygrade());
}
}
总结:通过这次作业学习到了Comparer类的相关知识
开源代码: