C#面试题更新 2026-08-03

请解释在 C# 中如何通过委托链来依次调用多个方法,并说明其实现原理与使用场景。

考察说明

考查对 C# 委托链的理解,包括多播委托的机制、调用顺序及异常处理。

回答思路

  1. 【回答框架 1】委托链基于多播委托实现,使用 += 操作符将多个方法添加到委托实例中,形成调用列表。调用时按添加顺序同步执行,直到所有方法完成或发生异常。
  2. 【回答框架 2】Delegate 类的 GetInvocationList() 方法可获取调用列表,便于手动遍历以控制调用过程,例如处理每个方法的返回值或捕获异常。
  3. 【回答框架 3】多播委托的返回类型通常为 void,因为只有最后一个方法的返回值会保留。若需获取每个方法的结果,应使用 GetInvocationList() 分别调用。
  4. 【回答框架 4】异常处理时,若某个方法抛出异常,后续方法不会执行。可通过遍历调用列表并逐个调用,在循环内捕获异常,以实现继续调用其余方法。
  5. 【关键点 1】使用 += 添加方法,-= 移除方法。
  6. 【关键点 2】调用顺序按添加顺序执行。
  7. 【关键点 3】GetInvocationList() 可获取调用列表,便于自定义遍历。
  8. 【关键点 4】多播委托返回值为最后一个方法的结果,通常用于 void 方法。
  9. 【关键点 5】需考虑异常对后续方法的影响。
  10. 【易错点 1】不能保证委托链内的每个方法都成功执行,异常会中断后续调用。
  11. 【易错点 2】多播委托的返回值为最后一个方法的结果,若依赖中间返回值应遍历调用。