委托和事件学习笔记

  class Program
    {
       
        static void Main(string[] args)
        {
            Console.WriteLine("场景开始,,老板委托主管director监看员工 是否上班时间玩游戏\n");
            System.Threading.Thread.Sleep(2000);
            director rector = new director();
            employee em = new employee();
            em.PlayGameEvent += new employee.PlayGamehandler(rector.PlayGameHandler);
            em.PlayGame();
            System.Threading.Thread.Sleep(2000);
            Console.WriteLine("场景结束,各位同志,一个一个退场~~88");
        }
    }
    class director
    {
        public director()
        {
            Console.WriteLine("我是主管,现在我出场了\n");
            System.Threading.Thread.Sleep(2000);
        }
        /// <summary>
        /// 处理玩游戏者
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void PlayGameHandler(object sender,System.EventArgs e)
        {
            Console.WriteLine("小子,敢玩游戏,被我看到了吧\n");
            System.Threading.Thread.Sleep(2000);
            employee em = new employee();
            int money = em.Money-500;
            Console.WriteLine("你玩吧,我就扣你工资 \n\n MS MM现在的工资是" + money);

            Console.WriteLine("MS MM   555……我不敢了饶了我吧。。\n\n没们");
        }
    }
    class employee
    {
        /// <summary>
        /// 定义一个事件发生的委托
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public delegate void PlayGamehandler(object sender, System.EventArgs e);
        /// <summary>
        /// 事件源,声明该委托类型的事件
        /// </summary>
        public event PlayGamehandler PlayGameEvent;
        int _money;
        public int Money
        {
            get{return _money;}
            set{_money=value;}
        }
        /// <summary>
        /// 初始化员工类
        /// </summary>
        public employee()
        {
            Console.WriteLine("我是Ms MM,现在我出场了\n");
            Money=1000;
            Console.WriteLine("我现在的 Money 是"+Money+"\n");
            System.Threading.Thread.Sleep(2000);
        }
        /// <summary>
        /// 开始玩游戏了
        /// </summary>
        public void PlayGame()
        {
            Console.WriteLine("开始玩游戏!\n");
            System.Threading.Thread.Sleep(2000);
            Console.WriteLine("靠,,魔兽好玩得很嘛~\n");
            eventPlayGame(new EventArgs());
        }
        /// <summary>
        ///  类声明了事件以后,可以就像处理所指示的委托类型的字段那样处理该事件
        /// </summary>
        /// <param name="e"></param>
        protected void eventPlayGame(EventArgs e)
        {
            if (PlayGameEvent != null)
            {
                PlayGameEvent.Invoke(this, e);
            }
        }
    }

posted @ 2009-10-25 02:49  爱的angell  阅读(184)  评论(0编辑  收藏  举报