• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

C#事件委托概念

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

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

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

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

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

为什么要用委托
  使用委托使程序员可以将方法引用封装在委托对象内。然后可以将该委托对象传递给可调用所引用方法的代码,而不必在编译时知道将调用哪个方法。与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("老鼠跑掉了!");
    }
}

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C#反射实例讲解发布时间:2022-07-13
下一篇:
C#Redis发布时间:2022-07-13
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap