📄 program.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
namespace Example15_3
{
class Program
{
//定义一个委托
delegate bool CompareOp(object lhs, object rhs);
static void Main(string[] args)
{
//初始化一个学生数组
Student[] students =
{
new Student("Zhang", 86),
new Student("Li", 75),
new Student("Wang", 93),
new Student("Zhao", 68),
new Student("Zhou", 76),
new Student("Ning", 98),
new Student("Mu", 46),
new Student("Liu", 53),
new Student("Jia", 100),
new Student("Pan", 83)
};
//使用RhsIsGreater方法进行比较,并用Sort方法排序
CompareOp studentCompareOp = new CompareOp(Student.RhsIsGreater);
ScoreSort.Sort(students,studentCompareOp);
//循环输出所有学生的已排序成绩
for (int i = 0; i < students.Length; i++)
{
Console.WriteLine(students[i].ToString());
}
Console.ReadLine();
}
/// <summary>
/// 排序类,方法Sort为静态方法,使用冒泡法
/// </summary>
class ScoreSort
{
/// <summary>
/// 冒泡法排序
/// </summary>
/// <param name="sortArray">要进行排序的数组</param>
/// <param name="Method">排序的方法</param>
static public void Sort(object[] sortArray, CompareOp Method)
{
//外围第一次循环
for (int i = 0; i < sortArray.Length; i++)
{
//第二次循环
for (int j = i + 1; j < sortArray.Length; j++)
{
//比较大小并交换
if (Method(sortArray[j], sortArray[i]))
{
object temp = sortArray[i];
sortArray[i] = sortArray[j];
sortArray[j] = temp;
}
}
}
}
}
}
/// <summary>
/// 学生类
/// </summary>
class Student
{
/// <summary>
/// 姓名字段
/// </summary>
private string name;
/// <summary>
/// 成绩字段
/// </summary>
private decimal score;
/// <summary>
/// 构造函数
/// </summary>
/// <param name="name">姓名</param>
/// <param name="score">成绩</param>
public Student(string name, decimal score)
{
this.name = name;
this.score = score;
}
/// <summary>
/// 比较方法
/// </summary>
/// <param name="lhs">左侧学生对象</param>
/// <param name="rhs">右侧学生对象</param>
/// <returns>右侧学生对象的成绩高则返回true</returns>
public static bool RhsIsGreater(object lhs, object rhs)
{
Student studentL = (Student)lhs;
Student studentR = (Student)rhs;
return (studentR.score > studentL.score) ? true : false;
}
/// <summary>
/// 重写ToString方法,可以使得输出更加清晰
/// </summary>
/// <returns>预定义格式的输出</returns>
public override string ToString()
{
return string.Format(name + " : " + score);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -