委托 - 事件

复制代码
namespace EventDemo
{
    /// <summary>
    /// 委托:委托别人干什么事
    /// 事件:委托是类,事件相当于类的实例
    /// 
    /// 例子:猫叫 - 主人醒 - 老鼠跑    /// 
    /// 猫叫后,委托别人把主人醒的方法调用,也委托别人把老鼠跑的实例调用,还可以委托别人做更多的事
    /// </summary>
    internal class Program
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();           

            People people = new People();
            // 委托让别人叫主人醒来
            cat.CateBarking += new CateBarkingEventHandler(people.WakeUp);
            Mouse mouse = new Mouse();
            // 委托别人叫老鼠跑
            cat.CateBarking += new CateBarkingEventHandler(mouse.MouseRun);

            // 调用猫叫
            cat.OnCatBarking(true);
            Console.ReadLine();
        }
    }

    // 定义一个猫叫的委托
    public delegate void CateBarkingEventHandler(bool enable);
    public class Cat
    {
        // 定义一个猫叫的事件
        public event CateBarkingEventHandler CateBarking;
        public void OnCatBarking(bool enable)
        {
            Console.WriteLine("猫叫");
            // 执行委托
            CateBarking?.Invoke(enable);
        }
    }

    public class People
    {
        public void WakeUp(bool enable)
        {
            if (enable)
            {
                Console.WriteLine("主人醒");
            }
            else 
            {
                Console.WriteLine("主人醒不来");
            }
            
        }
    }

    public class Mouse
    {
        public void MouseRun(bool enable)
        {            
            if (enable)
            {
                Console.WriteLine("老鼠跑");
            }
            else
            {
                Console.WriteLine("主人没醒,老鼠不跑");
            }
        }
    }
}
复制代码

 

posted @   月下之神  阅读(26)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示