C#学习笔记---委托(1)

来源:互联网 发布:软件项目管理论文 编辑:程序博客网 时间:2024/06/06 00:23
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks;/// <summary>///         小张委托小王买车票,又让买电影票/// </summary>namespace 委托{    class XiaoWang    {        public static void BuyTicket()        {            Console.WriteLine("帮小张买票");        }        public static void BuyMovieTicket()        {            Console.WriteLine("又帮小张买电影票");        }    }    class XiaoZhang    {        //定义委托类型        public delegate void BuyTicketEventHandler();         static void Main(string[] args)        {            //声明委托实例---方法一            //BuyTicketEventHandler buyTicketEventHandler = new BuyTicketEventHandler(XiaoWang.BuyTicket);             //声明委托实例---方法二            BuyTicketEventHandler buyTicketEventHandler;            //调用委托,委托实例指向一个要执行的方法            buyTicketEventHandler = XiaoWang.BuyTicket;            //一个委托可以指向多个要执行的方法,不过有先后执行顺序            buyTicketEventHandler += XiaoWang.BuyMovieTicket; //在买完车票之后再买电影票            //执行            buyTicketEventHandler();            //------------------------上面是一个委托,下面又是一个委托-----------------------//            NameEventHandler englishName,chineseName; //声明委托实例            englishName = EnglishName; //调用委托,委托实例指向一个要执行的方法            //chineseName = ChineseName; //方法一:可以单独把一个要执行的方法指向委托实例            englishName += ChineseName; //方法二:可以在一个委托实例中添加多个要执行的方法            //englishName -= ChineseName; //取消对方法的绑定            englishName("xiaowang"); //执行时,先执行EnglishName方法,再执行ChineseName方法。            //chineseName("小王"); //可以这样使用            Console.ReadKey();        }        public delegate void NameEventHandler(String name); //定义委托        public static void EnglishName(String name) //定义委托有形参时,这里的形参要和定义的委托形参一致。        {            Console.WriteLine("EnglishName:"+ name);        }        public static void ChineseName(String name)        {            Console.WriteLine("中国名:"+ name);        }    }}
原创粉丝点击