#foreach #nested #nested-loops
#foreach #Вложенный #вложенные циклы
Вопрос:
Я хочу иметь вложенные циклы над одним и тем же списком при увеличении числа вложенных циклов. Внутренний цикл вызовет метод со списком параметров.
public void MainMethod()
{
var list = new List<MyObject>();
//Populate list...
foreach (var item1 in list)
{
foreach (var item2 in list)
{
MyMethod(item1, item2);
}
}
foreach (var item1 in list)
{
foreach (var item2 in list)
{
foreach (var item3 in list)
{
MyMethod(item1, item2, item3);
}
}
}
// and so on...
}
private void MyMethod(params MyObject[] items)
{
}
Есть ли способ упростить это?
Обновление: одним из улучшений является добавление вызова метода предыдущих вложенных циклов внутри последнего вложенного цикла.
foreach (var item1 in list)
{
foreach (var item2 in list)
{
foreach (var item3 in list)
{
MyMethod(item1, item2, item3);
}
MyMethod(item1, item2);
}
}
Мой последний вложенный цикл будет иметь глубину 11 уровней, поэтому я подумал, что может быть более умный способ сделать это.
Комментарии:
1. не имеет смысла. myMethod ожидает массив, если вы не передаете массив, кроме того, вы передаете тот же элемент
2. myMethod принимает массив параметров. Я передаю (item1, item2) в первый раз и (item1, item2 и item3) во второй раз. Параметры превращают их в массивы.