C#委托的引用
来源:互联网 发布:10月经济数据公布 编辑:程序博客网 时间:2024/06/05 14:27
定义一个学生类—-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(); } }}
运行截图
该程序中,方法的回调体现了在方法fun()中,它包含一个xnDelegate类型的参数fxn。通过该参数,可以将student.max()方法传递到方法fun中,以求得成绩较好的学生,同理可以求成绩最差的学生。
阅读全文
0 0
- C#委托的引用
- c#委托引用与取消引用注意事项
- c#委托----单一的委托
- C#委托-委托的使用
- C#的委托
- C#的委托
- C#里的委托
- C#委托的进化
- c#委托的使用
- c# 委托的应用
- C# 的委托总结
- C#委托的实现
- C#的委托
- C# 委托的理解
- C#委托的作用
- C#委托的使用
- C#的委托
- C# 委托的使用
- 单元测试、集成测试和功能测试
- js window.sidebar下的addpanel 和addfavorite方法
- 倒计时五种方法,方法一:Timer与TimerTask(Java实现)
- tr对标准输入字符替换压缩和删除
- Android TextView部分文字实现点击事件
- C#委托的引用
- 倒计时五种方法,方法二:TimerTask与Handler(不用Timer的改进型)
- 【java】多态性实现机制——静态分派与动态分派
- IO最基本操作:字节流及转换流
- 判断当前的网络状态并跳转到系统设置
- HDU6214 2017青岛赛区网络赛
- 深度解析Java可变参数类型以及与数组的区别
- java版云笔记(三)
- 倒计时五种方法,方法三:Handler与Message(不用TimerTask)