zoukankan      html  css  js  c++  java
  • 委托/事件:猫叫鼠跑人醒

    猫叫鼠跑人醒,这是一个很经典的   委托/事件  案例,本例中,猫类、鼠类、人类的基本属性不再累述,关键说一下  委托/事件。

    第一步:因此在定义完毕  委托/事件  之后,要让猫叫触发定义的事件,

    第二步:要给鼠对象、人对象订阅猫叫事件,以在猫叫触发事件时作出相应的反应。

    using System;

    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace CatCryRatRunMasterWake
    {
      /// <summary>
      /// define a delegate
      /// </summary>
      public delegate void CatCryEventHandle();

      class Program
      {
        static void Main(string[] args)
        {
          Cat cat = new Cat("Tom");
          Rat rat = new Rat("Jack", cat);
          Master master = new Master("Ls", cat);
          cat.Cry();

          Console.ReadKey();
        }
      }

      /// <summary>
      /// define a cat objects
      /// </summary>
      public class Cat
      {
        private string _name;

        //define a cat cry event
        public event CatCryEventHandle WhenCatCry;

        public Cat(string name)
        {
        _name = name;
          }

        public void Cry()
        {
          this.WhenCatCry();
          Console.WriteLine("猫叫!");
        }
      }

      /// <summary>
      /// define a rat objects
      /// </summary>
      public class Rat
      {
        private string _name;
        public Rat(string name, Cat cat)
        {
          _name = name;
          cat.WhenCatCry += Run; //订阅猫叫事件
        }

        public void Run()
        {
          Console.WriteLine("老鼠跑!");
        }
      }

      /// <summary>
      /// define a master objects
      /// </summary>
      public class Master
      {
        private string _name;
        public Master(string name, Cat cat)
        {
          _name = name;
          cat.WhenCatCry += WakeUp; //订阅猫叫事件
        }

        public void WakeUp()
        {
          Console.WriteLine("主人醒!");
        }
      }
    }

  • 相关阅读:
    解决curl请求字段中带中文出错的问题
    字体下载
    Qt在windows与Mac OS中获取执行程序版本号
    QProcess启动不了外部程序的问题
    (Qt5Core.dll)处有未经处理的异常: 请求了严重的程序退出。
    QLabel
    解决接收命令行参数的数据中丢失双引号的问题
    QFile保留指定位置的数据
    ubuntu下使用docker安装部署openstf
    远程连接安卓设备步骤
  • 原文地址:https://www.cnblogs.com/jack-Leo/p/6404646.html
Copyright © 2011-2022 走看看