読者です 読者をやめる 読者になる 読者になる

複数の配列をひとつのループで処理したい 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厨になっている気がする。