反復処理 基本文法とその用例

基本文法
C#言語には集合に対する繰り返し処理の記述方法はいろいろあります

基本的な制御構文

Do-While,While,For といったおなじみの制御子構文はC#も同じです
int[] list = { 1,2,3,4,5,6,7,8,9,10};
int pos = 0;
 
// do-while構文
do
{
    Console.WriteLine(list[pos++]);
}
while (pos < list.Length);
 
// while構文
int pos = 0;
while(pos < list.Length)
{
    Console.WriteLine(list[pos++]);
}
 
// for構文
for(int pos = 0 ; pos < list.Length ; ++pos)
{
    Console.WriteLine(list[pos]);
}

Foreach(制御構文)

IEnumerableインタフェースを実現(継承)してる集合にはfoeach文が使えます
For文との比較でパフォーマンスの差異は今はあまりないようです。
int[] list = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

foreach(int item in list)
{
    Console.WriteLine(item);
}

Foreach(配列用)

System.Arrayクラスは配列に関するいろいろな機能を提供しています
このクラスに配列の繰り返し用の静的メソッドForEachが定義されています
int[] list = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

Array.ForEach(list,item=>Console.WriteLine(item));

Foreach(LINQ)

LINQにもあります
using System.Linq;

int[] list = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

list.ToList().ForEach(item => Console.WriteLine(item));
このForEachがLinqの演算子に見えるんですけど、直前のToListでListに変換されSystem.Collections.Generic.List<T>クラスにあるForEach(Action<T> action)メソッドが使える訳ですね。

Yield(列挙子)

IEnumerableを実現(継承)した処理を簡単に書けるようyieldという予約語があります
using System.Collections;
 
public IEnumerable GetEnumeratorSample()
{
    int[] list = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
 
    for (int pos = 0; pos < list.Length; ++pos)
    {
        yield return list[pos];
    }
}
 
foreach (int item in GetEnumeratorSample())
{
    Console.WriteLine(item);
}
基本文法
スポンサーリンク
C#プログラミング再入門