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

请介绍一下 C# 中将 List<T> 转为数组的常见方式,并比较不同方法的适用场景。

技术原理方案权衡C#

考察说明

考查 C# 集合与数组转换的 API 掌握及场景判断能力。

回答思路

  1. 【回答框架 1】C# 中 List<T> 转数组最常用的是 List<T>.ToArray() 方法,它返回一个包含列表中所有元素的新数组。
  2. 【回答框架 2】也可使用 LINQ 的 ToArray() 扩展方法,适用于任何 IEnumerable<T> 序列,包括 List<T>。
  3. 【回答框架 3】若需转换时进行元素类型转换,可使用 ConvertAll 或 LINQ 的 Select+ToArray 组合,例如 list.ConvertAll(x => x.ToString()).ToArray()。
  4. 【回答框架 4】对于需频繁转换的场景,注意 ToArray() 会复制元素,产生 O(n) 的时间和空间开销,大列表时需考虑性能。
  5. 【回答框架 5】若知道列表大小且需批量操作,可先用 List.CopyTo 手动拷贝到预先创建的数组。
  6. 【关键点 1】ToArray() 是 List<T> 和 LINQ 提供的便捷方法。
  7. 【关键点 2】ToArray() 创建新数组,不会影响原列表。
  8. 【关键点 3】用 LINQ 或 ConvertAll 可同时进行元素类型转换。
  9. 【关键点 4】大列表转换需注意性能。
  10. 【易错点 1】不建议用 List.CopyTo 时预先分配错误大小的数组。
  11. 【易错点 2】转换并不修改原列表,若需修改结果会影响原列表,需注意。
  12. 【易错点 3】元素是引用类型时,复制的是引用,修改对象会影响两个集合。