閑古鳥

オールドプログラマの日記。プログラミングとか病気(透析)の話とか。

複数の配列をひとつのループで処理したい in C#

元ネタ : 複数の配列をひとつのループで処理したい - ベイダー日記

定期的に欲しくなるので複数の配列を受け取って要素をひとつずつ返すようなメソッドを作りました。手元の環境はC#2.0で拡張メソッドなんてないので以下のようなメソッドをどこかのユーティリティクラスに実装します。

public static IEnumerable<T> MakeIterator<T>(params T[][] multiArray)
{
  foreach (T[] array in multiArray)
  {
    foreach (T element in array)
    {
      yield return element;
    }
  }
}

以下のように使う。

int[] a = {0, 1};
int[] b = {2, 3};
int[] c = {4, 5};
foreach(int n in MakeIterator(a, b, c))
{
  Console.WriteLine(n);
}

最近ちょっとyield厨になっている気がする。