Это именно то, что должно произойти, если вы выйдете из цикла foreach
и нажмете его еще раз.
Если вы хотите продолжить со второй, третьей или n-й позиции, просто не выходите из циклалибо используйте continue;
.Позвольте мне привести вам пример:
// This is a List of Lists of ints we'll iterate over
var outerList = new List<int> {1, 2, 3, 4, 5};
var innerList = new List<int> {1, 2, 3, 4, 5};
foreach(var outerItem in outerList)
{
// This will print '1, 2, 3, 4, 5' over the course of execution (as expected)
Console.WriteLine($"outerList item: {outerItem}");
foreach (var innerItem in innerList)
{
// This will always print '1', never something else (as expected)*
Console.WriteLine($"innerList item: {innerItem}");
break;
}
}
* Это потому, что foreach
никогда не может перейти ко второй записи innerList
, поэтому он просто печатает первую запись 5 (или сколько угодно элементов).в outerList
) раз.Весь вывод будет выглядеть так (без # ...)
outerList item: 1
innerList item: 1
outerList item: 2
innerList item: 1
outerList item: 3
innerList item: 1
outerList item: 4
innerList item: 1
outerList item: 5
innerList item: 1
Теперь, если мы удалим break
, это будет вывод:
outerList item: 1
innerList item: 1
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 2
innerList item: 1
...
Если наВторая итерация внешнего цикла, которую вы хотите начать со второй позиции во внутреннем цикле, вам нужно использовать стандартный цикл for
и целочисленный итератор, что-то вроде этого:
var outerList = new List<int> {1, 2, 3, 4, 5};
var innerList = new List<int> {1, 2, 3, 4, 5};
for (int i = 0; i < outerList.Count; i++)
{
Console.WriteLine($"outerList item: {outerList[i]}");
for (int j = i; j < innerList.Count; j++)
{
Console.WriteLine($"innerList item: {innerList[j]}");
}
}
Thisбудет, как ожидается, напечатать:
outerList item: 1
innerList item: 1
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 2
innerList item: 2
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 3
innerList item: 3
innerList item: 4
innerList item: 5
outerList item: 4
innerList item: 4
innerList item: 5
outerList item: 5
innerList item: 5
ps Обратите внимание, как я использовал отдельные имена для внешнего / внутреннего списка, а также для итераторов.Иначе это даже не скомпилируется (@mjwills уже указал это в комментариях)