多播委托与事件的案例

来源:互联网 发布:闲鱼申请淘宝介入15天 编辑:程序博客网 时间:2024/05/21 06:41
//用一个开机关机的例子 来解释事件的本质 , 一个委托变量可以存放多个方法,就像一条锁链一样namespace 开机关机{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("开机。。。");            Console.ReadKey();            CloseComputer cmp = new CloseComputer();            Console.WriteLine("打开qq");            Console.ReadKey();            //创建一个 closeqq的实例            Closeqq CQ = new Closeqq();            //此处调用cmp中的CloseApp 事件            cmp.CloseApp += CQ.Close;            Console.WriteLine("打开IE");            Console.ReadKey();            CloseIE CIE = new CloseIE();            cmp.CloseApp += CIE.Close;            Console.WriteLine("打开Word");            Console.ReadKey();            CloseWord CWD = new CloseWord();            cmp.CloseApp += CWD.Close;                        cmp.ShutDown();            Console.ReadKey();        }    }}//单独创建一个类来 声明一个委托namespace 开机关机{    public delegate void DelegateClose();}//创建一个电脑类 用来执行 关机操作namespace 开机关机{    class CloseComputer    {        //定义一个事件        //经反编译 可知 事件内部 其实就是一个 私有的委托变量和 一个Remove方法 和 一个 Add 方法        public event DelegateClose CloseApp;        public void ShutDown()        {            if (CloseApp != null)            {                CloseApp();            }            Console.WriteLine("正在关机中");        }    }}//关闭IE浏览器的一个类namespace 开机关机{    class CloseIE    {        public void Close()        {            Console.WriteLine("关闭IE浏览器");        }    }}//关闭Word文档的一个类namespace 开机关机{    class CloseWord    {        public void Close()        {            Console.WriteLine("关word");        }    }}//关闭qq的一个类namespace 开机关机{    class Closeqq    {        public void Close()        {            Console.WriteLine("关QQ");        }    }}


此示例 比较清楚的说明了 多播委托 :一个委托变量可以存放多个方法,就像一条锁链一样



原创粉丝点击