| 首先你要明白,现实生活中的委托也就是中介是什么意思!用一个人关于买书买饭的例子,来给你说一下。 首先我们假设要买书,但我们是通过书店或者网上,这个书店网上就相当于一个委托也就是中介。我们要通过买书的时候首先这个中介得存在(也就是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("您的选择不正确!");
                    }
                }
            }
           
        }
    }
}
 |