zoukankan      html  css  js  c++  java
  • 委托和事件C#演示代码

    class Cat
    {
        private string _name;
        public Cat(string name)
        {
            _name = name;
        }
    
        public void Shout()
        {
            Console.WriteLine("瞄,我是"+_name+",我来了!");
            CatShout();        //第三步,触发点,事件要加括号
        }
    
        public delegate void CatShoutEventHandler();    //第一步,声明委托,要加圆括号
    
        public event CatShoutEventHandler CatShout;        //第二步,声明事件,类型为以上委托类型
    }
    
    class Mouse
    {
        public string _name;
        public Mouse(string name)
        {
            _name = name;
        }
    
        public void Run()
        {
            Console.WriteLine("猫来了,我是"+_name+",快跑!");
        }
    }
    
    static void Main(string[] args)
    {
        Cat cat=new Cat("Tom");
        Mouse jerry=new Mouse("Jerry");
        Mouse jack=new Mouse("Jack");
    
        cat.CatShout += new Cat.CatShoutEventHandler(jerry.Run);    //第四步,将相关方法的委托登记到事件
        cat.CatShout += new Cat.CatShoutEventHandler(jack.Run);
    
        cat.Shout();
        Console.ReadLine();
    }

    1、委托是对函数的封装,一旦为委托分配了方法,委托将具有与该方法完全相同的行为。

    2、关于事件和委托的关系,可以看作容器和元素的关系,事件是委托的容器,容器(事件)里可以装(登记)许多元素(委托)。当执行事件时,会逐个执行在该事件中登记的委托。

    使用委托和事件的步骤:

    1、声明委托

    2、声明事件,事件类型为以上委托的类型

    3、确定触发点

    4、将引用方法的委托注册到事件

    具体代码可参考最上。

  • 相关阅读:
    PHP查看IP时候能ping通
    mysql把查询到不一样的记录插入到另一张表中
    js本地预览图片
    redis 扩展下载
    mysql update select子查询
    mysql view视图的简单使用....
    两表联查关联字段我想查多个怎么办???
    两表联查是关联字段的值位数不一样时怎么办???
    使用PHP生成二维码(PHPQRCode)
    .net初学之SerialPort串口类
  • 原文地址:https://www.cnblogs.com/NaughtyBaby/p/4312983.html
Copyright © 2011-2022 走看看