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

在 C# 编程中,foreach 循环的用法是怎样的?

考察说明

考查对 C# foreach 循环语法和适用场景的理解。

回答思路

  1. 【回答框架 1】foreach 循环是 C# 中用于遍历集合或数组的简洁语法,其形式为 foreach (类型 变量 in 集合) { 循环体 }。它自动从集合中取出每个元素赋给循环变量,无需手动管理索引或迭代器,适用于数组、List、Dictionary 等实现了 IEnumerable 或 IEnumerable<T> 接口的类型。
  2. 【回答框架 2】foreach 循环内部实际上是对迭代器模式的封装,编译器会生成对 GetEnumerator 方法的调用,并通过 MoveNext 和 Current 来依次访问元素。因此,只要类型支持迭代,就能使用 foreach,这比 for 循环更简洁,也避免了索引越界的风险。
  3. 【回答框架 3】foreach 循环只能用于读取元素,不能在循环体内修改集合的结构(如添加、删除元素),否则会抛出 InvalidOperationException。若需修改元素,应使用 for 循环或转为 List 后操作。
  4. 【回答框架 4】foreach 的性能与 for 循环在大多数情况下相近,但在遍历数组时编译器可能进行优化,而在遍历链表等非连续内存结构时,foreach 可能更高效,因为它避免了索引访问的开销。
  5. 【关键点 1】foreach 适用于实现 IEnumerable 的类型,自动管理迭代。
  6. 【关键点 2】不能修改集合结构,否则抛异常。
  7. 【关键点 3】遍历数组时可能优化,但链表等用 foreach 更自然。
  8. 【易错点 1】不能修改集合的结构,易被忽略。
  9. 【易错点 2】循环变量是只读的,修改它不会影响原集合。