`
zs851
  • 浏览: 5594 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

  程序设计: 猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。(C#语言)

阅读更多
首先进行分析:
思路:
  先看下过程:猫叫->|人醒
            |老鼠跑
所以我们可以给猫写个事件,这个事件由猫叫来触发,而人和老鼠中的某个方法
人醒和老鼠跑这两个方法注册到猫这个事件上就行了

结果,猫叫-人醒、老鼠跑
//public delegate void CatCallEventHandler(object sender, EventArgs e);    
    /// <summary>    
    /// 猫类    
    /// </summary>    
    class Cat
    {
        //定义一个猫叫事件的委托    
        public delegate void CatCallEventHandler(object sender, EventArgs e);
        //定义事件    
        public event CatCallEventHandler CatCall;
        protected virtual void OnCatCall(EventArgs e)
        {
            CatCallEventHandler Handler = CatCall;
            if (Handler != null)
            {
                Handler(this, e);
            }
        }
        /// <summary>    
        /// 触发事件的方法    
        /// </summary>    
        public void cCall()
        {
            Console.WriteLine("猫叫了!");
            OnCatCall(new EventArgs());
        }
        /// <summary>    
        /// 委托方法    
        /// </summary>    
        /// <param name="Handler"></param>    
        /// <param name="sender"></param>    
        /// <param name="e"></param>    
        public void cCall(CatCallEventHandler[] Handler, object sender, EventArgs e)
        {
            Console.WriteLine("猫叫了!");
            foreach (CatCallEventHandler h in Handler)
            {
                h(sender, e);
            }
        }

    }
    /// <summary>    
    /// 人类    
    /// </summary>    
    public class Man
    {
        private string _Name;
        public Man() { }
        public Man(string Name)
        {
            _Name = Name;
        }
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public void ManAwake(object sender, EventArgs e)
        {
            Console.WriteLine("Man" + _Name + "醒了!");
        }
    }
    /// <summary>    
    /// 老鼠类    
    /// </summary>    
    public class Mouse
    {
        private string _Name;
        public Mouse() { }
        public Mouse(string Name)
        {
            _Name = Name;
        }
        public string Name
        {
            get { return _Name; }
            set { _Name = value; }
        }
        public void MouseRunAway(object sender, EventArgs e)
        {
            Console.WriteLine("Mouse" + _Name + "跑了!");
        }
    }
    public class Test
    {
        //static void Main(string[] args)    
        //{    
        // Cat c = new Cat();    
        // Man m = new Man("张三");    
        // Man x = new Man("小子");    
        // Mouse mo = new Mouse("小白");    

        // Cat.CatCallEventHandler[] Hander = { m.ManAwake, x.ManAwake, mo.MouseRunAway };    

        // //c.CatCall += new Cat.CatCallEventHandler(m.ManAwake);    
        // //c.CatCall += new Cat.CatCallEventHandler(mo.MouseRunAway);    
        // //c.CatCall += new Cat.CatCallEventHandler(x.ManAwake);    
        // //c.cCall();    
        // c.cCall(Hander, new object(), new EventArgs());    
        //}    
    }

转载别人的做法,纯粹学习你分析问题的思路,没别的意思
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics