请解释 C# 中多播委托的概念,并说明其典型的使用方式。
考察说明
考查对 C# 委托机制中多播特性的理解及实际应用能力。
回答思路
- 【回答框架 1】多播委托是 C# 中一种特殊的委托类型,其内部维护一个调用列表,可以按顺序调用多个方法。它通过组合多个委托实例实现,使用加号运算符或 Combine 方法合并,使用减号运算符或 Remove 方法移除。
- 【回答框架 2】使用多播委托时,调用委托会依次执行列表中的所有方法,返回值仅取最后一个方法的返回值,因此通常用于无返回值或返回 void 的事件处理场景。
- 【回答框架 3】典型使用方式包括事件声明、回调组合和批量通知。例如,在事件中,多个订阅者方法通过 += 注册,触发时按注册顺序执行。
- 【回答框架 4】多播委托的调用列表是线程不安全的,多线程环境下需要同步机制。此外,异常会中断后续方法的执行,需在方法内部处理异常。
- 【回答框架 5】在 .NET 中,多播委托是事件的基础,事件本质上是受限制的多播委托,只能通过 += 和 -= 操作。
- 【关键点 1】多播委托通过组合多个方法形成调用列表,按顺序执行。
- 【关键点 2】返回值仅取最后一个方法的返回值,适合无返回值场景。
- 【关键点 3】使用 += 和 -= 或 Combine/Remove 管理调用列表。
- 【关键点 4】多播委托是事件的基础,事件限制外部直接调用。
- 【关键点 5】调用列表线程不安全,异常会中断后续调用。
- 【易错点 1】误以为多播委托返回值是所有方法返回值的集合,实际只取最后一个。
- 【易错点 2】忽略多线程下的线程安全问题,导致调用列表被并发修改。
- 【易错点 3】未处理方法内异常,导致后续方法不执行。