欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C#关于Func和Action委托的介绍详解

程序员文章站 2023-10-28 12:41:52
委托:委托(delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。委托(delegate)特别用于实现事件和回调方法。所有的委托(delegate)都派生自 system...

委托:委托(delegate) 是存有对某个方法的引用的一种引用类型变量。引用可在运行时被改变。

委托(delegate)特别用于实现事件和回调方法。所有的委托(delegate)都派生自 system.delegate 类。

1.action委托

没有返回值,可以不包含参数

(1)声明委托、定位委托事件、向委托添加事件、执行委托

输出结果:

C#关于Func和Action委托的介绍详解

由于btn_click为点击事件,点击第二次(第二次点击会再次向委托添加事件)的数据结果如下:

C#关于Func和Action委托的介绍详解

因此,向委托添加事件时,一个事件仅添加一次即可,若进行多次添加则调用委托时会将添加进入委托的所有事件进行调用,无论该事件是否已添加都会进行调用,故做如下处理(在构造函数中或在程序启动时添加委托事件):

C#关于Func和Action委托的介绍详解

上图中委托调用时提示波浪线,因为是委托在调用时可能未添加事件,将会抛出:未将对象引用设置到对象的实例的异常信息,

异常信息:

C#关于Func和Action委托的介绍详解

故调用时进行异常处理或做如下处理:

处理方案1:

处理方案2

此时,我们已经学会了action委托的简单使用,这时会有人考虑到,我想调用完返回信息action委托并没有返回,会限制我们的使用,不要着急,我们系统已经帮我们准备了一个现成的委托类型func,下面我们对func做个介绍。

2.func委托

话不多说,上代码,以下我们定义了包含两个参数int和double,返回值为string类型的func委托,并添加了两个事件fun_1和fun_2:

输出结果:

C#关于Func和Action委托的介绍详解

从输出结果不难看出向委托添加多个事件(委托的多播或组播),委托包含返回值时,仅得到最后向委托添加的事件(方法)的返回值,所以在使用有返回值时必须注意这一点。

以下为先添加fun_2后添加fun_1的返回结果:

C#关于Func和Action委托的介绍详解

到这里,委托的介绍我们已经介绍完了,更多相关c# func 和action 委托内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!