MST
星途 面试题库

面试题:C#中for循环与foreach循环的差异及应用场景

请阐述C#中for循环和foreach循环在语法、功能以及适用场景上的主要差异。并分别给出一个实际应用场景的代码示例,比如使用for循环对数组元素进行特定条件筛选并修改,使用foreach循环遍历字典输出键值对。
14.9万 热度难度
编程语言C#

知识考点

AI 面试

面试题答案

一键面试

语法差异

  • for循环:语法结构为for (初始化表达式; 条件表达式; 迭代表达式) { 循环体 },需要手动初始化循环变量、定义循环条件和更新循环变量。
  • foreach循环:语法结构为foreach (var item in collection) { 循环体 },无需手动管理循环变量,直接对集合中的每个元素进行迭代。

功能差异

  • for循环:功能更为灵活,可以根据需求控制循环的起始、结束和步长,适用于需要精确控制循环次数的场景。
  • foreach循环:专门用于遍历集合,每次迭代自动获取集合中的下一个元素,无需手动索引,简化了遍历操作,但不能直接修改集合元素(除非集合元素本身是可修改的引用类型)。

适用场景差异

  • for循环:适用于需要对循环进行精确控制,例如按照特定步长迭代、根据复杂条件结束循环等场景。
  • foreach循环:适用于简单地遍历集合元素,无需修改元素本身,只想读取元素值的场景。

代码示例

for循环对数组元素进行特定条件筛选并修改

int[] numbers = { 1, 2, 3, 4, 5 };
for (int i = 0; i < numbers.Length; i++)
{
    if (numbers[i] % 2 == 0)
    {
        numbers[i] *= 2;
    }
}
foreach (var num in numbers)
{
    Console.WriteLine(num);
}

foreach循环遍历字典输出键值对

Dictionary<string, int> dict = new Dictionary<string, int>()
{
    { "one", 1 },
    { "two", 2 },
    { "three", 3 }
};
foreach (var kvp in dict)
{
    Console.WriteLine($"Key: {kvp.Key}, Value: {kvp.Value}");
}