参考源链接:https://www.bilibili.com/video/BV1Bk4y1B7DN
概念简述
委托 -> 本人不需要亲自去操作执行,全权委托第三方,替它来执行具体事物的概念。
【现实】世界(具体):
①N个舍友委托你带饭
②我委托邻居去帮忙喂狗这一操作。委托什么事就干什么事,没委托的一律不负责。
【抽象】世界(抽象):
①通过 委托类型变量 间接 调用方法,不需要直接调用
什么是委托?
●委托(全称“委托类型”)是一种类(Class),引用类型的数据类型。
●可以存储一个或者多个方法的引用 / 封装一个或者多个方法/指向一个或者多个方法。
●C#中的委托→C/C++函数指针的“升级版”。
●委托能够封装、储存的方法在【返回值类型】和【参数列表类型】上保持绝对的类型兼容。
●事件就是委托字段的包装器。委托是事件的底层基础,事件是委托的上层建筑。
自定义委托的声明
public delegate 目标方法返回值类型 委托名称(目标方法参数列表);
C#中的委托→C/C++函数指针的“升级版”。
C#中类内外声明委托的区别:
实际代码测试:
多播委托√
描述:通过委托类型的变量调用多个方法。
由于委托能够存储一个或者多个方法的引用,可通过+=操作符赋值给委托类型的变量。
缺陷:
C#类库定义好的委托类型
(1)Action委托 > 无返回值,可以有参数列表
(2)Func委托 > 有返回值,也可以有参数列表
●Action委托、Func委托的背后,实际上C#已经写好了delegate(泛型)的定义。