参考源链接:https://www.bilibili.com/video/BV1Bk4y1B7DN

概念简述

委托 -> 本人不需要亲自去操作执行,全权委托第三方,替它来执行具体事物的概念。
【现实】世界(具体):
①N个舍友委托你带饭
②我委托邻居去帮忙喂狗这一操作。委托什么事就干什么事,没委托的一律不负责。
【抽象】世界(抽象):
①通过 委托类型变量 间接 调用方法,不需要直接调用

什么是委托?

●委托(全称“委托类型”)是一种类(Class),引用类型的数据类型。
●可以存储一个或者多个方法的引用 / 封装一个或者多个方法/指向一个或者多个方法。
●C#中的委托→C/C++函数指针的“升级版”。
●委托能够封装、储存的方法在【返回值类型】和【参数列表类型】上保持绝对的类型兼容。
●事件就是委托字段的包装器。委托是事件的底层基础,事件是委托的上层建筑。
image.png
image.png

自定义委托的声明

  1. public delegate 目标方法返回值类型 委托名称(目标方法参数列表);

C#中的委托→C/C++函数指针的“升级版”。
image.png
C#中类内外声明委托的区别:
1650596437.png
实际代码测试:
image.png

多播委托√

描述:通过委托类型的变量调用多个方法。
由于委托能够存储一个或者多个方法的引用,可通过+=操作符赋值给委托类型的变量。
image.png

缺陷:

image.png
image.png

C#类库定义好的委托类型

(1)Action委托 > 无返回值,可以有参数列表
(2)Func委托 > 有返回值,也可以有参数列表
●Action委托、Func委托的背后,实际上C#已经写好了delegate(泛型)的定义。