C#委托的引用

xiaoxiao2021-03-01  75

定义一个学生类—-student类,然后定义一个方法fun(),通过委托实现方法回调,使之能求出成绩最好的学生,也能求出成绩最差的学生。  代码:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace usingDelegate { class Student { private string name; //姓名 private double score; // 成绩 public Student(string name, double score) //定义构造函数,初始化姓名和成绩 { this.name = name; this.score = score; } public void showInfo() //显示学生信息 { Console.WriteLine("姓名:{0},\t成绩:{1}", name, score.ToString()); } public static object max(object obj1, object obj2) //求最大值(静态方法) { Student st1 = (Student)obj1; Student st2 = (Student)obj2; if (st1.score > st2.score) return st1; return st2; } public static object min(object obj1, object obj2) //最小值(静态方法) { Student st1 = (Student)obj1; Student st2 = (Student)obj2; if (st1.score > st2.score) return st2; return st1; } //申明委托类型,可以关联静态方法student.max()和student.min() } class Program { delegate object xnDelegate(object o1, object o2); //以委托作为参数,定义方法fun(),以求st1和st2中成绩较好的和较差的 static Student fun(Student st1, Student st2,xnDelegate fxn) { return (Student)fxn(st1, st2); } static void Main(string[] args) { Student[] sts = //创建学生数组 { new Student ("zhangsan",90), new Student("lisi",100), new Student ("wangwu",89), new Student ("wanger",69), }; //创建委托对象mx,关联静态方法student.max xnDelegate mx = new xnDelegate(Student.max); //创建委托对象mi,关联静态方法studnet.min xnDelegate mi = new xnDelegate(Student.min); Student maxst, minst; maxst = minst = sts[0]; sts[0].showInfo(); //利用fun()方法求成绩最好的学生和成绩最差的学生 for (int i = 1; i <= sts.Length-1; i++) { sts[i].showInfo(); maxst = fun(maxst, sts[i], mx); minst = fun(minst, sts[i], mi); } Console.WriteLine("-------------------------------"); Console.WriteLine("成绩最好的学生:"); maxst.showInfo(); Console.WriteLine("------------------------------"); Console.WriteLine("成绩最差的学生:"); minst.showInfo(); Console.ReadKey(); } } }

 

转载请注明原文地址: https://www.6miu.com/read-4200338.html

最新回复(0)