C#委托的概念

委托:

委托数据类型:

由CRL托管,CRL创建和释放。引用类型,值类型

非委托数据类型:

手动创建和释放,Stream(字节流),StreamReader(读字节流)

概念:

可以将一个方法作为参数使用,这种将方法动态赋给参数的做法。

委托本质就是一个类,继承自System.MulticastDelegate,内置了3个方法:Invoke();BeginInvoke();EndInvoke();

继承关系:System.MulticastDelegate->Delegate->object

使用过程中便于理解,把委托理解成函数指针,即一个指向函数的指针,通过指针调用函数。

意义:

解耦:

减少重复代码

接触判断逻辑和逻辑之间的耦合

委托传递的是逻辑(方法)

异步多线程

多播委托:

+=为委托实例按顺序增加方法,形成方法链,Invoke()时按顺序执行

-=为委托实例移除方法,从方法 链尾部开始匹配,遇到第一个完全吻合的移除,且只移除一个,没有的也不异常带返回值

一个委托名绑定多个方法,Invoke()时按绑定顺序(+=)顺序执行

委托类型有:无返回值Action泛型委托,有返回值Func泛型委托,返回值bool值Predicate泛型委托,自定义委托Delegate

事件:

事件是带event关键字的委托的实例

事件可以限制变量外部调用,或者直接赋值

事件可以把一些列的行为封装,交给第三方执行

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值