C# 委托

     有的人把委托看作是函数编程,而我并不这么认为,我觉得委托是为了更加接近OOP面向对象设计的,它把函数看作一个对象,只是与普通的对象存在一定的差异。

    我先看这样一段代码,如下:


代码实例

在C#的定义中delegate是一个类型,但是它是一种特殊的类型,方法的类型,它定义了方法参数和返回值,准确的说它是方法的集合,因为它可以将数个具有相同参数和返回值的方法累加起来形成一个链式反应。代码如下:


代码实例

这种+=的方式是有顺序的,之所以说它是链式反应就是这个原因,这些方法就像链条一样一个接一个执行,直到最后一个。在C#中已经为我们定义好了2个泛型模版的函数类型:Func和Action,下面我们来看看如何使用它:


代码实例

Action是一个没有返回值的委托类型,你可以用如Action<T,T,...>的方式来定义要传入的方法的参数格式,这里不多做介绍。

Func是具有一个返回值的委托类型,用法与Action类似,但是最后后一个类型作为方法返回值,并且它有且只有一个返回值。

可能大家都会存在一个疑问这种方式有什么好处,我举个简单的例子:如果我们有一个游泳馆,在这个游泳馆有3种人,一种是套路出牌做3件事 换泳衣 找泳池 游泳,第2种人直接穿着泳衣来,那它只用做两件事 找泳池 游泳,最后一种是工作人员可能时刻准备救人,它只有游泳一个动作,下面请看代码:


代码实例

这样我们就可以控制这个链条了,当然这只是一个直线的链条,你可以设计分叉的链条让委托的参数也是委托,设计的更加丰富,如果想设计的更完美,请结合泛型。

我将继续努力,如有问题请留言,竭尽全力为您解忧

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容