zoukankan      html  css  js  c++  java
  • C#事件委托概念

    事件就是一个狭义的委托,也就是事件是一个用于事件驱动模型的专用委托.

    通俗的讲,委托你可以在客户代码中直接调用委托来激发委托指向的函数,而事件不可以,事件的触发只能由服务代码自己触发

    也就是说在你的代码里委托你不但可以安排谁是它的调用函数,还可以直接调用它,而事件不能直接调用,只能通过某些操作触发

    你可以理解事件就是一个或多个委托,此话应该有误的吧,事件可以有多个事件处理函数,委托同样也可以是个多播委托

    委托的本质是引用类型,用于包装回调函数,委托用于实现回调机制;事件的本质是委托,事件是回调机制的一种应用。

    为什么要用委托
      使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。

    /*
    道事件委托面试题 - 猫叫老鼠跑主人醒
    */
     
    using System;
     
    namespace CatCry
    {
        class MainClass
        {
            static void Main(string[] args)
            {
                Cat cat = new Cat();
               // cat.OnMew += People.Wake;
                cat.Mew();
            }
        }
    }
     
    public class Cat
    {
        public delegate void EventMiao();
        public event EventMiao OnMew;
     
        
     
     
        public void Mew()
        {
            Console.WriteLine("miao....");
            OnMew += People.Wake;
            OnMew += Mouse.Run;
            OnMew();
        }
    }
     
    public class People
    {
        public static void Wake()
        {
            Console.WriteLine("人醒!");
        }
    }
     
    public class Mouse
    {
        public static void Run()
        {
            Console.WriteLine("老鼠跑掉了!");
        }
    }
  • 相关阅读:
    单链表反转
    C++面试题
    堆排序
    1链表:回文链表(leetcode 234)
    深信服社招linux岗面试记录
    腾讯后台开发社招记录(电话面试)
    小米社招ATE岗位记录
    诺基亚社招C++面试记录
    腾讯后台开发社招面试记录
    makefile笔记
  • 原文地址:https://www.cnblogs.com/weihengblogs/p/10075575.html
Copyright © 2011-2022 走看看