委托是C语言的函数指针的升级版
image.png

C#自带委托

Action:无返回值的委托
Func:有返回值(<>最后一个参数)
运行委托可以用Invoke 或者直接() 启动;

delegate自定义委托

image.png

委托的使用

image.png
不要轻易使用多层回调,容易出现混乱。下面就是垃圾代码事例:
image.png
image.png

委托与内存泄漏

如果委托引用的是一个实例方法,那被引用对象就不会被释放。

委托的高级使用

image.png

异步调用

使用委托的 BeginInvoke() 方法隐式的异步调用(会自动开启新的线程),或者使用Task显示的异步调用。
image.png

用接口代替委托

能减少对委托的依赖
image.png