A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ljh4282158 中级黑马   /  2013-6-11 15:29  /  1354 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

猫叫了,老鼠跑了,人醒醒了

       猫大叫一声,小老鼠吓的发疯的跑了,米老鼠也吓跑了,主人醒了
     (方法、委托通过传参数来判断是普通叫,还是大叫)
      int i=0;普通叫
      int i=1;大叫

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

3 个回复

倒序浏览
delegate void ActionDelegate();
    class Cat
    {
        public event ActionDelegate OnCry;
        public event ActionDelegate OnCry1;

        public void Cry()
        {
            Console.WriteLine("请输入0或着1");
            int i = Convert.ToInt32(Console.ReadLine());
            if (i == 0)
            {
                Console.WriteLine("猫叫了");
                OnCry();
            }
            else
            {
                Console.WriteLine("猫大叫一声");
                OnCry1();
            }
        }
    }
    class Mouse
    {
        public Mouse(Cat cat)
        {
            cat.OnCry += new ActionDelegate(Run);
            cat.OnCry1 += new ActionDelegate(Run1);
        }
        public void Run()
        {
            Console.WriteLine("老鼠跑了");
        }
        public void Run1()
        {
            Console.WriteLine("小老鼠吓得发疯的跑了,米老鼠也吓跑了");
        }
    }
    class Master
    {
        public Master(Cat cat)
        {
            cat.OnCry += new ActionDelegate(Week);
            cat.OnCry1 += new ActionDelegate(Week);
        }
        public void Week()
        {
            Console.WriteLine("主人醒了");
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse = new Mouse(cat);
            Master master = new Master(cat);
            cat.Cry();
            Console.ReadKey();

        }
    }

评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 一直在努力 于 2013-6-11 22:31 编辑

猫叫了,老鼠跑了,人醒醒了

       猫大叫一声,小老鼠吓的发疯的跑了,米老鼠也吓跑了,主人醒了
      (方法、委托通过传参数来判断是普通叫,还是大叫)
       int i=0;普通叫
       int i=1;大叫

public delegate void FunCallDelegate(int i);

public class Cat{
      public event FunCallDelegate Call;

      public void Call(int i )
      {
            Call(out i);
      }
}

public class Mouse
{         
         public Mouse(Cat cat)
               {
                           cat.Call+= Run;
        }
         public void Run(int i)
                {
               switch(i)
               {
                        case 0:
                               Console.WriteLine("老鼠跑了");
                               break;
                        case 1:
                               Console.WriteLine("小老鼠吓得发疯的跑了,米老鼠也吓跑了");
                               break;
                        default
                               Console.WriteLine("没事...");
                }
        }
}

public class Master
{

         public Master(Cat cat)
         {
                   cat.Call+= Run;
        }
        public void Run(int i)
        {
                   switch(i)
                   {
                              case 0:
                                     Console.WriteLine("人醒醒了");
                                     break;
                             case 1:
                                     Console.WriteLine("主人醒了");
                                      break;
                            default:
                                      Console.WriteLine("没事...");
                   }
        }
}

class Program
    {
              static void Main(string[] args)
              {
                       Cat cat = new Cat();
                      Mouse mouse = new Mouse(cat);
                     Master master = new Master(cat);
                      int i=0;
                      cat.Call(0);
                      i=1;
                      cat.Call(1);
                      Console.ReadKey();

              }
    }



评分

参与人数 1技术分 +1 收起 理由
苏波 + 1

查看全部评分

回复 使用道具 举报
一直在努力 发表于 2013-6-11 22:23
猫叫了,老鼠跑了,人醒醒了

       猫大叫一声,小老鼠吓的发疯的跑了,米老鼠也吓跑了,主人醒了

记得..有两种...一种是通过观察者..模式做的...我觉得那种比较合理...还有谢谢楼上的..兄弟..我代码是学你的..只是做了小改动..你是原创
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马