Расскажи друзьям


Миничат

В онлайне 0 чел.

Для добавления необходима регистрация или зайти под своим логином.

Опрос

Хотели бы вы сами добавлять вопросы с ответами на сайт?

Да, у меня скопились лишние вопросы с ответами

Я добавлять не буду, но хотелось бы чтоб другие это делали

Я доверяю только администратору этого сайта

Мне ничего не нужно

Умные цитаты

Азартная игра это дитя скупости, сестра несправедливости, мать злого умысла.
Д. Вашингтон.

Список тегов Добавить пост
Просто начни вводить вопрос в поле и получи ответ

Все посты Новости Вопросы
Аватар пользователя Зиги зиги

Заметки 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)
       {
           //действия
          /*
            При такой конструкции мы будем выходить из внутреннего цикла (j), но внешний так и
            продолжит свою работу(i)
          */
          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;
          /*
          Это примерно тоже само что сделать 
          i = 1000000;
          */
       }
   }
}

Комментарии 0 2019-10-29 04:10:33 5