前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[C#] 用委托表示回调

[C#] 用委托表示回调

作者头像
科控物联
发布于 2022-03-29 11:44:25
发布于 2022-03-29 11:44:25
5170
举报
文章被收录于专栏:科控自动化科控自动化

回调就是这样一种由服务端向客户端提供异步反馈的机制,它可能会涉及多线程(multithreading),也有可能只是给同步更新提供入口。C#语言用委托来表示回调。

通过委托,可以定义类型安全的回调。最常用到委托的地方是事件处理,然而除此之外,还有很多地方也可以用。如果想采用比接口更为松散的方式在类之间沟通,那么就应该考虑委托。这种机制可以在运行的时候配置回调目标,并且能够通知给多个客户端。委托是一种对象,其中含有指向方法的引用,这个方法既可以是静态方法,又可以是实例方法。开发者可以在程序运行的时候配置一个或多个客户对象,并与之通信。

由于经常需要使用回调与委托,因此,C#语言提供了一种简便的写法,可以直接用lambda表达式来表示委托。此外,.NET Framework库也用Predicate<T>、Action<>及Func<>定义了很多常见的委托形式。predicate(谓词)是用来判断某条件是否成立的布尔(Boolean)函数,而Func<>则会根据一系列的参数求出某个结果。其实Func<T,bool>与Predicate<T>是同一个意思,只不过编译器会把两者分开对待而已,

结论:

Func<T, bool>是对delegate bool Predicate<T>(T obj)的简化,

Predicate<T>又是对Func<T, bool>的简化,

其实,就是一个东西。

List<T>中的方法应该统一参数。

提示也可以看出.

也就是说,即便两个委托是用同一套参数及返回类型来定义的,也依然要按照两个来算,编译器不允许在它们之间相互转换。Action<>接受任意数量的参数,其返回值的类型是void。

LINQ就是用这些机制构建起来的。List<T>类也有很多方法用到了回调。比方说下面这段代码:

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 科控物联 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档