架构师_程序员_码农网

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

搜索
查看: 24343|回复: 1

[资料] C#委托的介绍(delegate、Action、Func、predicate)

[复制链接]
发表于 2018-4-9 14:57:15 | 显示全部楼层 |阅读模式

委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递。事件是一种特殊的委托。

1.委托的声明

(1). delegate

        delegate我们常用到的一种声明

   Delegate至少0个参数,至多32个参数,可以无返回值,也可以指定返回值类型。

   例:public delegate int MethodtDelegate(int x, int y);表示有两个参数,并返回int型。

(2). Action

       Action是无返回值的泛型委托。

Action 表示无参,无返回值的委托

Action<int,string> 表示有传入参数int,string无返回值的委托

  Action<int,string,bool> 表示有传入参数int,string,bool无返回值的委托

       Action<int,int,int,int> 表示有传入4个int型参数,无返回值的委托

Action至少0个参数,至多16个参数,无返回值。

例:



(3). Func

Func是有返回值的泛型委托

Func<int> 表示无参,返回值为int的委托

Func<object,string,int> 表示传入参数为object, string 返回值为int的委托

Func<object,string,int> 表示传入参数为object, string 返回值为int的委托

Func<T1,T2,,T3,int> 表示传入参数为T1,T2,,T3(泛型)返回值为int的委托

Func至少0个参数,至多16个参数,根据返回值泛型返回。必须有返回值,不可void


例:




(4) .predicate

predicate 是返回bool型的泛型委托

predicate<int> 表示传入参数为int 返回bool的委托

Predicate有且只有一个参数,返回值固定为bool

例:







上一篇:【实战】rabbitMQ Queue队列消息持久化[附源码]
下一篇:关于activemq和rabbitmq资料汇总
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
发表于 2019-12-17 19:42:23 | 显示全部楼层
我有一个疑问。写多了js,习惯了回调函数这个东西。

然后就用了Func作为参数。而这个Func我又想用异步执行。找了些答案可以将Func放到Task.Run
他很快的切换了线程id。

而我异想天开使用了Func<string,Task<string>>,这样就可以直接等待该函数了,但发现他并没有真正的切换线程Id。
码农网,只发表在实践过程中,遇到的技术难题,不误导他人。
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

免责声明:
码农网所发布的一切软件、编程资料或者文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。

Mail To:help@itsvse.com

QQ|手机版|小黑屋|架构师 ( 鲁ICP备14021824号-2 )|网站地图

GMT+8, 2025-5-7 01:24

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表