zoukankan      html  css  js  c++  java
  • 委托和事件学习笔记

      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);
                }
            }
        }

  • 相关阅读:
    Sql server2008如何导入Excel文件数据?
    oracle和sql server中,取前10条数据语法的区别
    如何将两个字段合成一个字段显示(oracle和sqlserver的区别)
    php递归注意事项
    PHP实现执行定时任务
    商城怎么使用ajax?
    添加新权限管理
    PHP判断一个JSON对象是否含有某一个属性的方法
    centos 中查找文件、目录、内容
    phpStorm中如何不让其自动添加封闭大括号?
  • 原文地址:https://www.cnblogs.com/angells/p/1589377.html
Copyright © 2011-2022 走看看