如何防止在我的解决方案中重复共同循环?

pen*_*ake 0 .net c# code-duplication jagged-arrays

我有一个基于锯齿状数组的循环,我需要在不同的地方使用多次.

如何防止自己一次又一次地重写这个循环,以便我将它复制?

      foreach (int[] columns in rowsAndColumns)
      {
          foreach (int element in columns)
          {

          }
      }
Run Code Online (Sandbox Code Playgroud)

Tim*_*mwi 8

你可以写

foreach (int element in rowsAndColumns.SelectMany(col => col))
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

代替.如果您不想一直输入,可以将其抽象为辅助方法:

foreach (int element in rowsAndColumns.Flatten())
{
    // ...
}

// [...]

public IEnumerable<T> Flatten(this IEnumerable<IEnumerable<T>> source)
{
    return source.SelectMany(e => e);
}
Run Code Online (Sandbox Code Playgroud)