1.委托得声明、实例化和调用
(1)委托:本质是一个类,继承自System.MulticastDelegate,里面内置了几个方法,如构造函数等。

(2)声明委托:委托无方法体,可以有返回值或参数,也可以没有

(3)实例化委托
调用时.Invoke可省略;不带返回值


![]()
带返回值

(4)多种途径实例化

(5)利用委托封装通用的异常处理

2.委托:解耦,减少代码重复


调用:
![]()
3.委托的意义:异步多线程
4.委托的意义:多播委托(不能异步),如果多播委托带返回值,则以最后一个结果为准
“+=”:按顺序增加,依次执行
“-=”:按顺序移除,如果没有合适的也不会异常

5.事件,观察者模式
(1)观察者模式
当我们有一个动作,能触发N个动作时,每一次改动都会影响主程序

这时我们可以使用委托,把具体动作事件封装出去


(2)事件:事件是带event关键字的委托的实例;事件是委托类型的一个实例;安全保障,event可以限制变量被外部调用或赋值,子类也不能调用,只有声明者才能调用。










![[附源码]java毕业设计新闻发布和评论管理系统](https://img-blog.csdnimg.cn/02107b8c8a33456c830fa6728477097d.png)




![[附源码]java毕业设计星期八酒店管理系统](https://img-blog.csdnimg.cn/5b17d4bcc0a34e51b343f7292ebe0c46.png)



