时间:2021-05-19
有一天,你写了好多好多带“形参”的构造函数(就是“方法”,同义),而且需要向这些构造函数里传递同样的“实参”,然后你就憨憨地一个一个函数的调用并赋予同样的“实参”,这一天就这么过去了...
又过了几天,你又要再一次调用这么多函数了,你再老老实实地一个一个函数进行调用?!聪明的你,肯定会想:真TM麻烦!有没有一劳永逸的办法呢?
你需要的正是----“委托”
来,先看一个简单的例子,要表述的是----有一位贵宾将要作客一家豪华的酒店,老板(boss)下发了通知,他的两个助理(ass1和ass2)分别要通知到女服务员(Waiteress)和厨师(Cooker),让他们该干啥干啥去。
class Program { static void Main(string[] args) { //委托就是个“类”,也需要“实例化”,让“ass1”通知“Waiteress”。 Convey_Dele ass1 = new Convey_Dele(Waiteress); //让“ass2”通知“Cooker” Convey_Dele ass2 = new Convey_Dele(Cooker); //“boss”通知两个助理“ass1和ass2”,术语为“合并委托(或“多路广播委托”)” Convey_Dele boss = new Convey_Dele(ass1 + ass2); //“boss”发话 boss("一位贵宾要来了!"); Console.ReadKey(); } //声明一个叫做“Convey_Dele”的委托,形参为“string command” public delegate void Convey_Dele(string command); //构造一个名为“Waiteress”的函数,构造函数的形参必须与委托形参一致! public static void Waiteress(string command) { //“Waiteress”要去干的事儿 Console.WriteLine("女服务员接到通知:" + command + "所以她要去迎接客人"); } public static void Cooker(string command) { Console.WriteLine("厨师也接到了通知:" + command + "所以他去准备饭菜"); } }运行后的结果:
这样,老板发出任何指令,下级都该干啥干啥去,老板不需要知道下级的具体动作是什么,只要干的好,完成就可以。
聪明的你,又会想,代码能否再简化和多样化呢?可以。上面代码可以更改为:
class Program { static void Main(string[] args) { Convey_Dele ass1, ass2; //另写函数再实例化太麻烦了,直接在这里把函数一起写了。术语“匿名函数”,“delegate”是关键字 ass1 = delegate (string command) { Console.WriteLine("女服务员接到通知:" + command + "所以她要去迎接客人"); }; //匿名函数也太麻烦了,还得写“delegate”,改用一个符号来表示,术语“兰姆达表达式” ass2 = (string command) => { Console.WriteLine("厨师也接到了通知:" + command + "所以他去准备饭菜"); }; //等同于 ass1 = ass1 + ass2,基本的“加等”运算符,“减等”也是可以使用的~ 比如:若ass1 = ass1 + ass2,那ass1 -= ass1等同于ass1=ass2 ass1 += ass2; ass1("一位贵宾要来了!"); Console.ReadKey(); } public delegate void Convey_Dele(string command); }运行后的结果与之前未简化前一模一样。这样的简化写法还是有很强的“可读性”的,“匿名函数”和“兰姆达表达式”还有更简单的写法,只要是一个形参,还可以连形参都省略,知道这回事就行了...
这样,我们在调用众多函数的时候就可以灵活运用委托来简化代码和“搬砖”的繁琐劳动。
好了,初学委托的内容就先讲这么多吧,我也是在一边学习,一边去理解的,在写博客时表现出来的有许多不足之处请广大园友指出,我不吝赐教!
以上就是大白话讲解C# 中的委托的详细内容,更多关于c# 委托的资料请关注其它相关文章!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
“大白话,讲编程”系列又回来了,这个系列我们一起学习的是Vue.js基础知识。你没看错,是基础知识。所以,哪怕你入行不久,相信你在的大白话风格下,也能学会。但还
前言在Vue中,slot是一个很有用的特性,可以用来向组件内部插入一些内容。slot就是“插槽”的意思,用大白话说就是:定义组件的时候留几个口子,由用户来决定插
根据日常开发经验及网上相关资料,用简单通俗易懂的大白话分析自适应跟响应式的区别。注:本文只分析自适应跟响应式的区别以及了解其由来的背景,不在于讨论其使用的方法一
四.直通车图的审核标准1.主题:主题卖点只要一个,并且要求简要明了精确,标题尽量控制在6字以内,紧扣消费者诉求,讲大白话,一听就明白。直击要害,能感知打动用户。
“网店代运营”用大白话来讲就是“把网店包给有实力的团队来运营”,网店所有者在法律法规的监督下花钱请专业的第三方平台来帮助运营自己的店铺。十年前电商上诞生不久的时