2

可能重复:
foreach 循环如何在 C# 中工作?

就像经典的迭代语句,例如for、while 或 do-whileis foreach loop is a new loop statment in c#?in other languages such as php

或者

在幕后,它将我们的代码转换为 for、while 或 do-while 循环。

4

3 回答 3

8

foreach 构造等价于:

IEnumerator enumerator = myCollection.GetEnumerator();
try
{
   while (enumerator.MoveNext())
   {
       object current = enumerator.Current;
       Console.WriteLine(current);
   }
}
finally
{
   IDisposable e = enumerator as IDisposable;
   if (e != null)
   {
       e.Dispose();
   }
}

请注意,此版本是非通用版本。编译器可以处理IEnumerator<T>.

于 2012-07-03T18:06:58.187 回答
4

它不是一个新循环。它从一开始就存在。

The foreach statement repeats a group of embedded statements for each element in an array or an object collection. The foreach statement is used to iterate through the collection to get the desired information, but should not be used to change the contents of the collection to avoid unpredictable side effects.

class ForEachTest
{
    static void Main(string[] args)
    {
        int[] fibarray = new int[] { 0, 1, 2, 3, 5, 8, 13 };

        foreach (int i in fibarray)
            System.Console.WriteLine(i);
    }

}

输出

0
1
2
3
5
8
13

与用于索引和访问值(如 array[index])的 for 循环不同,foreach 直接作用于值。

更多在这里

于 2012-07-03T18:04:23.667 回答
0

它实际上是一个 while 循环,它使用容器的 GetEnumerator() 方法,有关详细信息,请参阅http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx

对于数组,它被优化为使用索引器。

于 2012-07-03T18:10:54.357 回答