やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

C#の概念 イテレータ

 繰り返すヤツ。

成果物

情報源

コード

 以下コードはすべて同じ結果になる。

foreach

foreach (var item in new int[] { 1,3,5 }) {
    Console.WriteLine($"{item}");
}

 配列の要素を1つずつitemに代入してループする。

IEnumerable, yield return

using System.Collections.Generic;

private IEnumerable<int> ReturnYield() {
    yield return 1;
    yield return 3;
    yield return 5;
}
foreach (var item in ReturnYield()) {
    Console.WriteLine($"{item}");
}

 yield returnにて1つずつ返す。

式、文

private IEnumerable<int> ReturnYield() {
    for (int i=0; i<6; i++) {
        if (1 == (i%2)) { yield return i; }
    }
}

 yield returnは式や文の中でも使える。

 ただしreturnとの混在は不可。

対象環境

$ uname -a
Linux raspberrypi 4.19.42-v7+ #1218 SMP Tue May 14 00:48:17 BST 2019 armv7l GNU/Linux