📜  C#| foreach循环

📅  最后修改于: 2021-05-29 18:01:40             🧑  作者: Mango

先决条件: C#中的循环

编程语言中的循环是一种根据要评估的条件的结果多次执行一条语句或一组语句的方法。结果条件应为true,才能在循环内执行语句。 foreach循环用于遍历集合的元素。该集合可以是数组或列表。它针对数组中存在的每个元素执行。

  • 有必要将大括号{}中的foreach循环语句括起来。
  • 无需声明和初始化循环计数器变量,而是声明一个与数组的基本类型相同类型的变量,后跟一个冒号,然后是一个冒号,然后是数组名。
  • 在循环主体中,可以使用创建的循环变量,而不是使用索引数组元素。

句法:

foreach(data_type var_name in collection_variable)
{
     // statements to be executed
}

流程图:

范例1:

// C# program to illustrate the
// use of foreach loop
using System;
  
class GFG {
  
    // Main Method
    static public void Main()
    {
  
        Console.WriteLine("Print array:");
  
        // creating an array
        int[] a_array = new int[] { 1, 2, 3, 4, 5, 6, 7 };
  
        // foreach loop begin
        // it will run till the
        // last element of the array
        foreach(int items in a_array)
        {
            Console.WriteLine(items);
        }
    }
}
输出:
Print array:
1
2
3
4
5
6
7

说明:上面程序中的foreach循环等效于:

for(int items = 0; items < a_array.Length; items++)
{
    Console.WriteLine(a_array[items]);
}

范例2:

// C# program to illustrate 
// foreach loop 
using System;
  
class For_Each     
{
      
    // Main Method
    public static void Main(String[] arg) 
    { 
        { 
            int[] marks = { 125, 132, 95, 116, 110 }; 
              
            int highest_marks = maximum(marks); 
              
            Console.WriteLine("The highest score is " + highest_marks); 
        } 
    } 
      
    // method to find maximum
    public static int maximum(int[] numbers) 
    { 
        int maxSoFar = numbers[0]; 
          
        // for each loop 
        foreach (int num in numbers) 
        { 
            if (num > maxSoFar) 
            { 
                maxSoFar = num; 
            } 
        } 
    return maxSoFar; 
    } 
} 
输出:
The highest score is 132

foreach循环的局限性:

  1. 当您要修改数组时,不适合使用Foreach循环:
    foreach(int num in marks) 
    {
        // only changes num not
        // the array element
        num = num * 2; 
    }
    
  2. Foreach循环不跟踪index 。因此我们无法使用ForEach循环获取数组索引
    foreach (int num in numbers) 
    { 
        if (num == target) 
        {
            return ???;   // do not know the index of num
        }
    }
    
  3. Foreach仅一步一步就可以遍历数组
    // cannot be converted to a foreach loop
    for (int i = numbers.Length - 1; i > 0; i--) 
    {
         Console.WriteLine(numbers[i]);
    }
    

for循环和foreach循环之间的区别:

  • for循环执行一条语句或一条语句块,直到给定条件为假。而foreach循环为数组中存在的每个元素执行一个语句或语句块,而无需定义最小或最大限制。
  • for循环中,我们在向前和向后两个方向上迭代数组,例如,从索引0到9,从索引9到0。但是在foreach循环中,我们仅在向前方向而不是在反向方向上迭代数组。
  • 就变量声明而言,foreach循环具有五个变量声明,而for循环仅具有三个变量声明。
  • foreach循环将复制该数组,并将此副本放入新数组中以进行操作。而for循环不起作用。