• Delegate示例


    我们先看一个代理的示例,通过这个示例我们进一步的了解代理的用法(这个示例可以直接运行):

    示例:半夜,一个房子里,猫大叫,主人惊醒,老鼠吓跑!

                  分析:首先我们得有个房子,房子里有一只猫,有个主人,还有一只老鼠(可能很多,呵呵呵)。猫有个叫的方法,主人有个惊醒的方法,老鼠有个吓跑的方法,当猫一叫,触发主人惊喜的方法和老鼠吓跑的方法。所以我们在猫的类里边放一个代理,代理的是主人惊醒的方法和老鼠吓跑的方法,当老鼠一叫,我们只需要调用这个代理就行了。

    那么我们就看下边的代理:

    using System;

    using System.Collections.Generic;

    using System.Linq;

    using System.Text;

    namespace DelegateDemo

    {

        class mian

        {

           

            public static void Main(string[] args)

            {

                //初始化房子这个对象

                House house = new House();

                house.CheckCatCry();

            }

        }

        class House

    {

        //房子里有猫,主人和老鼠三个对象

            private Cat cat = new Cat();

            private Human human = new Human();

            private Mouse mouse = new Mouse();

            public House()

            {

                //在构建房子时就应该把主人惊醒和老鼠吓跑的方法挂上,因为只有在一个房子里,才有可能发生半夜,一个房子里,猫大叫,主人惊醒,老鼠吓跑!这件事。

                cat.catcry = new Cat.CatCryDelegate(human.JingXing);

                cat.catcry += new Cat.CatCryDelegate(mouse.Pao);

            }

    public void CheckCatCry()

            {

                Console.WriteLine("猫叫了么?(1:叫了,2:没叫)");

                string result = Console.ReadLine();

                if (cat != null)

                {

                  // 如果猫叫了

                    if (result.Equals("1"))

                    {

                        cat.Cry();

                    }

                }

            }

      }

        class Cat

    {

         //代理声明

            public delegate void CatCryDelegate();

             //初始化代理变量

            public CatCryDelegate catcry;

            public Cat()

            {

            }

             //猫大叫的方法

            public void Cry()

            {

                Console.WriteLine("猫:哇,喵,哇,喵喵!");

                //猫大叫会触发主人惊醒,和老鼠吓跑两件事,这里我们已经在初始化房子的时候已经放到了代理(Catcry)里了,这里只需要触发这个代理就行了。

                catcry();

            }

    }

    //主人类

        class Human

    {

    //主人的惊醒方法

            public void JingXing()

            {

                Console .WriteLine ("主人:死猫别叫!");

            }

    }

    //老鼠类

       class Mouse

    {

    //老鼠的逃跑的方法

            public void Pao()

            {

            Console.WriteLine ("老鼠:猫来了,快跑!");

            }

        }

    }

  • 相关阅读:
    asp.net中3个常用的功能,直接上代码
    看WEB 2.0实战书中的部分技术资料 引用 很随笔,很杂乱
    Building a Web 2.0 Portal with ASP.NET 3.5(DropThings实例教学)
    如何防治猪流感!猪流感!?会像SARS那样爆发吗?我们能作的就是预防。
    招聘!北京 DNN程序员 5K7K
    国外的机器人爱好者使用C#等研发的一种家庭灭火机器人
    OLAP与OLTP的区别 及 什么是数据仓库
    动态绑定数据源的ReportViewer终于搞定了
    牛奶再次出事?!算了,我还是自己榨豆浆吧。中国人喝豆浆!
    c#遍历HashTable
  • 原文地址:https://www.cnblogs.com/zxjyuan/p/1612603.html
Copyright © 2020-2023  润新知