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

请说明在 C# 编程语言中,针对集合类型执行并集、交集和差集运算的具体实现方式有哪些?

技术原理方案权衡C#LINQ

考察说明

考查候选人是否掌握 C# 集合运算的常用 API 和适用场景。

回答思路

  1. 【回答框架 1】在 C# 中,最常用的集合运算方式是通过 LINQ 提供的 Enumerable 扩展方法:Union、Intersect 和 Except。这些方法分别对应并集、交集和差集操作,它们返回一个新的序列,且默认使用默认相等比较器去除重复元素。
  2. 【回答框架 2】对于自定义类型的集合,可以通过实现 IEquatable<T> 接口或传入自定义的 IEqualityComparer<T> 来指定元素的相等性判断逻辑,以保证运算结果符合业务语义。
  3. 【回答框架 3】除 LINQ 之外,也可以使用 HashSet<T> 类型。HashSet<T> 提供了 UnionWith、IntersectWith 和 ExceptWith 方法,这些方法会直接修改当前集合对象,适用于需要就地更新集合且注重性能的场景,因为 HashSet 内部基于哈希表,平均时间复杂度接近 O(n)。
  4. 【回答框架 4】选择使用 LINQ 还是 HashSet 取决于具体需求:LINQ 方法返回新的集合,不会改变原集合,适合函数式编程风格;HashSet 方法则直接在原集合上进行修改,更适合性能敏感且允许破坏性操作的场景。
  5. 【关键点 1】LINQ 的 Union、Intersect、Except 方法分别实现并集、交集和差集。
  6. 【关键点 2】HashSet 的 UnionWith、IntersectWith、ExceptWith 方法可修改原集合。
  7. 【关键点 3】默认使用默认相等比较器,可自定义 IEqualityComparer<T> 控制元素比较。
  8. 【易错点 1】LINQ 方法返回新集合不会修改原集合,而 HashSet 方法会修改原集合,容易混淆。
  9. 【易错点 2】自定义类型若不正确实现相等性比较,可能导致运算结果不符合预期。