2009年11月14日

【yield】 foreach文を途中でbreakするには?

yield句について最初から読みたい方はこちらからどうぞ。
今回は、foreach文を中断する為の構文、yield breakについて解説します。
といっても簡単なので早速以下のコードを御覧ください。
class BreakableClass
{
    public IEnumerator<int> GetEnumerator()
    {
        for (int i = 0; i < 10; i++)
        {
            if (i == 5)
            {
                // iが5になったらループを抜ける
                yield break;
            }

            // ループカウンタの値を返す
            yield return i;
        }
    }
}

class Program
{
    static void Main(string[] args)
    {
        var breakClass = new BreakableClass();
        foreach (int n in breakClass)
        {
            Console.WriteLine(n);
        }
    }
}
//<処理結果>
0
1
2
3
4
本来、yield breakが無い場合は0〜9までの数字が表示されるはずですが、
ループ変数iが5になった時に、ループ処理を打ち切っているので
0〜4まででforeach文が終了します。
つまり、yield break文でforeachを中断する処理を書けるという訳です。

タグ:yield
posted by 吾一 at 17:33| 4. yield return | このブログの読者になる | 更新情報をチェックする
×

この広告は1年以上新しい記事の投稿がないブログに表示されております。