黑马程序员技术交流社区

标题: 给大家一道c#经典笔、机试题练练手 [打印本页]

作者: ljh4282158    时间: 2013-6-11 15:29
标题: 给大家一道c#经典笔、机试题练练手
猫叫了,老鼠跑了,人醒醒了

       猫大叫一声,小老鼠吓的发疯的跑了,米老鼠也吓跑了,主人醒了
     (方法、委托通过传参数来判断是普通叫,还是大叫)
      int i=0;普通叫
      int i=1;大叫
作者: ljh4282158    时间: 2013-6-11 19:32
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();

        }
    }
作者: 一直在努力    时间: 2013-6-11 22:23
本帖最后由 一直在努力 于 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();

              }
    }




作者: 一直在努力    时间: 2013-6-11 22:26
一直在努力 发表于 2013-6-11 22:23
猫叫了,老鼠跑了,人醒醒了

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

记得..有两种...一种是通过观察者..模式做的...我觉得那种比较合理...还有谢谢楼上的..兄弟..我代码是学你的..只是做了小改动..你是原创




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2