首先你要明白,现实生活中的委托也就是中介是什么意思!用一个人关于买书买饭的例子,来给你说一下。
首先我们假设要买书,但我们是通过书店或者网上,这个书店网上就相当于一个委托也就是中介。我们要通过买书的时候首先这个中介得存在(也就是1.定义一个Delegate函数数据结构),中介有了我们得知道中介是可以用来做那些事情的(定义Delegate将引用的静态方法或引用类实例及该类的实例方法),然后我们得找到这个能替我们解决问题的中介(3.Delegate数据变量指向实例方法),最后中介接到我们的问题之后就调用他们内部的渠道去解决问题(4.通过Delegate数据变量执行实例方法)而这整个过程做为调用方,委托的方法对我们来说是看不到的,我们不知道中介接到我们的问题之后,会执行那些方法去替我们解决问题。下面是我写的一个简单的例子:- namespace 委托
- {
- public delegate void MaiFan(String Name,String res);
- public delegate void MaiShu(String Name, String res);//1.定义一个委托数据结构
- class Program
- {
- public static void MiFan(String Name, String res)//2.定义Delegate将引用的静态方法或引用类实例及该类的实例方法
- {
- Console.WriteLine("hello!{0}你要买的是{1},已经好了",Name,res);
- }
- public static void XiFan(String Name, String res)//创建要委托的静态方法
- {
- Console.WriteLine("hello!{0}你要买的是{1}已经好了", Name, res);
- }
- public static void JiaoZi(String Name, String res)//创建要委托的静态方法
- {
- Console.WriteLine("hello!{0}你要买的是{1},已经好了", Name, res);
-
- }
- public static void YuWen(String Name, String res)//创建要委托的静态方法
- {
- Console.WriteLine("hello!{0}你要买的是{1},已经好了", Name, res);
- }
- public static void ShuXUe(String Name, String res)//创建要委托的静态方法
- {
- Console.WriteLine("hello!{0}你要买的是{1},已经好了", Name, res);
- }
- public static void WuLi(String Name, String res)//创建要委托的静态方法
- {
- Console.WriteLine("hello!{0}你要买的是{1},已经好了", Name, res);
- }
-
- static void Main(string[] args)
- {
- MaiFan MF = null;
- MaiShu MS = null;
- while (true)
- {
- Console.WriteLine("你要买书,还是买饭!请选1买饭,选2买书");
- int num = Convert.ToInt16(Console.ReadLine());
- if (num == 1)
- {
- Console.WriteLine("你好!请输入你的名字!");
- string name = Console.ReadLine();
- Console.WriteLine("请选择你要买饭的序号!米饭(1)希饭(2)饺子(3)");
- int nu = Convert.ToInt16(Console.ReadLine());
- switch (nu)
- {
- case 1:
- MF = MiFan;//3.Delegate委托数据变量指向实例方法
- MF(name,"自动生成的米饭");//4执行委托实例方法
- break;
- case 2:
- MF = XiFan;
- MF(name, "自动生成的希饭");
- break;
- case 3:
- MF = XiFan;
- MF(name, "自动生成的饺子");
- break;
- default: break;
- }
- }
- else
- {
- if (num == 2)
- {
- Console.WriteLine("你好!请输入你的名字!");
- string name = Console.ReadLine();
- Console.WriteLine("请选择你要买书的类型!语文(1)数学(2)物理(3)");
- int nu = Convert.ToInt16(Console.ReadLine());
- switch (nu)
- {
- case 1:
- MS =YuWen;
- MS(name, "自动生成的语文");
- break;
- case 2:
- MS = ShuXUe;
- MS(name, "自动生成的数学");
- break;
- case 3:
- MS = WuLi;
- MS(name, "自动生成的物理");
- break;
- default: break;
- }
- }
- else
- {
- Console.WriteLine("您的选择不正确!");
- }
- }
- }
-
- }
- }
- }
复制代码 |