Заметки C#Выход из вложенного цикла(двойной цикл)
Имеем код
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
}
}
}
Использую break внутри второго цикла даст только выход из него
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
break;
}
}
}
Для полного выхода из цикла есть несколько вариантов.
1) применить оператор
goto
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
goto Found;
}
}
}
Found:
2) Затолкать цикл в функции и использовать оператор return
public void Loop()
{
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
return;
}
}
}
}
3) Использование дополнительного флага для первого цикла
var flag = false;
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
flag = true;
break;
}
}
if(flag == true) break;
}
4) Последний вариант. Присвоить i максимально возможное значение при первом выходе из цикла.
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (i > 5 && j == 7)
{
i = Int32.MaxValue - 1;
}
}
}