说说我对委托的理解 

 

在写代码的过程中每个人多多少少都会碰到委托.虽然并不是特别常用,但是却非常重要.

我们来分析下委托是什么.

  

   举个小例子:         

 

   重要活动接待员:您好,检票,请出示门票

 

   我:哎呀妈呀,票没带,我这猪脑子.

 

   我:还有半小时,得叫人找个送过来啊.不然凉了..

 

   我:喂,姐,我房间桌上有个活动门票忘带了,帮我找个快递小哥半小时内把送门票送过来啊,半小时内啊,来不及了,十万火急..

 

   姐姐:半小时..

 

   姐姐:  脑袋炸裂的你姐姐,帮你寻找快递小哥中....

 

   等待28分钟后,满头大汗的快递小哥吧门票送到你面前.

 

   我:好险啊..终于进来了

 

   =================================================================================================================分割线

   在上面的例子中,因为我忘记带门票,导致无法入场,最后由姐姐帮忙找到(骑车,奔跑很快)的快递小哥 ,完成了的半小时内送门票的任务

   

   先记住用颜色标记的3个关键字 姐姐快递小哥半小时内送门票的任务 

 

   如果在代码中我们要如何描述上面的整个事件过程呢,看看下面的代码

   首先定义了半小时内送门票的任务(门票肯定是必须的,还得要骑车很快,奔跑贼快的快递小哥才行啊

 

 

  是不是很眼熟, 我们来 一个单词一个词的来分析上面要完成的任务:

  delegate  定义这是一个自己完成不了的任务 (一个你和姐姐都完成不了的任务 ,你姐不够快啊!!)

   void    收到门票后的答复,可以是void 无答复,也可以是需要其他各种类型的答复(string,int,class,委托类型)

  OverSMP   给半小时内送门票任务取个名字

  string  MP      你的门票(委托的要求)

FKXG fKXG     跑的飞快的小哥(委托的要求)

  

  接下来应该要找能完成任务的快递个公司了吧.(嗯,不错,你姐找到2个有跑的飞快小哥员工的快递公司)

 

 快递小哥长这样.真的挺快的:

 

 

   2个快递公司给出了快速配送方案,很符合送门票的事情

     

  接下来要把任务给到快递公司了,给谁呢,你姐选择了快递公司xiaoming的公司.

 (这里需要注意你姐姐sister只是个OverSMP委托的实例化变量,你姐姐怎么干的了呢,她只是变量可以指向很多快递公司+=, -=,最终她指向了xiaoming快递小哥的公司方案 ,快递公司接到指令,执行了自己的方案,这点很重要,姐姐是变量只是承载,指向而已)

   这里就很好的说明了为什么委托和c++函数指针很像,但是委托是安全的,有强(固定)类型,GC自动回收垃圾,C++函数指针无法直接回收,所以不太安全)

   看到这里委托已经露出了他的全部面目,再看看下图加深理解.

 

 

 

 

委托总结:

委托就是方法的模板,需要达成条件的方法才能指向委托,并且委托自己执行不了

需要一个变量(存储并指向符合条件的方法),最后调用的是人是变量(姐姐角色)传入参数执行所有指向的真实方法.

posted on 2021-01-20 10:58  _终于小学毕业  阅读(67)  评论(0编辑  收藏  举报