重複の可能性:
foreach ループは C# でどのように機能しますか?
for 、 while 、 do-while、is foreach loop is a new loop statment in c#?
またはin other languages such as php
また
舞台裏で、コードを for、while、または do-while ループに変換します。
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>
.
新しいループではありません。それは最初から存在しています。
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
インデックスに使用され、配列 [インデックス] のような値にアクセスする for ループとは異なり、foreach は値に直接作用します。
詳細はこちら
これは実際には while ループであり、コンテナーの GetEnumerator() メソッドを使用します。詳細については、http://msdn.microsoft.com/en-us/library/aa664754(v=vs.71).aspx を参照してください。
配列の場合、インデクサーを使用するように最適化されています。