用户名
Email
论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
应用中心
帖子
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
IT评测·应用市场-qidao123.com技术社区
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
C#.Net筑基-解密委托与变乱
C#.Net筑基-解密委托与变乱
忿忿的泥巴坨
论坛元老
|
2024-8-5 10:01:31
|
显示全部楼层
|
阅读模式
楼主
主题
1926
|
帖子
1926
|
积分
5778
委托与变乱是C#中历史比力久长的技术,从C#1.0开始就有了,核心作用就是将方法作为参数(变量)来传递和使用。其中委托是基础,须要熟练掌握,编程中常用的Lambda表达式、Action、Func都是委托,包罗变乱也是基于委托实现的。
01、认识委托delegate
1.1、什么是委托?
委托是一种用来包装方法的特别范例,可以将方法包装为对象进行传递、调用,雷同函数指针。
delegate
关键字用来定义一个委托范例,语法雷同方法申明,可以看做是一个“方法署名模板”,和方法一样定义了方法的返回值、参数。
用 delegate 定义的委托是
一个类
,继承自 System.MulticastDelegate、System.Delegate,“方法名”就是委托范例的名称。
委托的使用同其他平凡范例,实例指向一个方法的引用,该方法的申明和委托定义的“方法署名模板”须匹配(
支持协变逆变
)。
委托支持连接多个委托(方法),称为多播委托(
MulticastDelegate
),执行时都会调用。
public delegate void Foo(string name); //申明一个委托类型
void Main()
{
Foo faction; //申明一个Foo委托(实例)变量
faction = DoFoo; //赋值一个方法
faction += str => { Console.WriteLine($"gun {str}"); }; //添加多个"方法实例"
faction += DoFoo; //继续添加,可重复
faction("sam"); //执行委托,多个方法会依次执行
faction.Invoke("zhang"); //同上,上面调用方式实际上还是执行的Invoke方法。
}
private void DoFoo(string name){
Console.WriteLine($"hello {name}");
}
复制代码
委托的主要使用场景:核心就是把方法作为参数来传递,分离方法申明和方法实现。
回调方法
,包装方法为委托,作为参数进行传递,解耦了方法的申明、实现和调用,可以在差别的地方进行。
Lambda表达式
,这是委托的简化语法情势,更简洁,比力常用。
变乱
,变乱是一种特别的委托,是基于委托实现的,可以看做是对委托的封装。
1.2、Delegate
API
[table][tr]<strong>
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
忿忿的泥巴坨
论坛元老
这个人很懒什么都没写!
楼主热帖
axios 传递参数的方式(data 与 params ...
Swift字符串操作-持续更新-2022 ...
【iOS逆向与安全】frida-trace入门 ...
springmvc异常处理解析#ExceptionHandl ...
Kubernetes(K8S) Controller - Deploym ...
MVCC - Read View的可见性判断理解 ...
食品商城网站设计—食品商城购物网站(8 ...
隐匿自己的c2服务器(一)
最佳实践-使用Github Actions来构建跨 ...
PHP001
标签云
集成商
AI
运维
CIO
存储
服务器
浏览过的版块
运维.售后
登录参与点评抽奖加入IT实名职场社区
下次自动登录
忘记密码?点此找回!
登陆
新用户注册
用其它账号登录:
关闭
快速回复
返回顶部
返回列表