Вложенные циклы foreach c # - PullRequest
       31

Вложенные циклы foreach c #

0 голосов
/ 03 апреля 2012
        foreach (int i in a.set)
        {
            foreach (int k in b.set)
            {
                if (i < k)
                {
                    return true;                                
                }
                else if (i > k)
                {
                    return false;
                }
            }
        }


        return false;
    }

У меня есть два набора, набор включает в себя 3,4,6 b.set включает в себя 3,4,5

Проблема в том, что внешний цикл повторяется только один раз.Но это содержит 3 элемента, почему это?

Ответы [ 5 ]

7 голосов
/ 03 апреля 2012

Вы возвращаетесь в свой внутренний цикл.Это немедленно завершает содержащий метод.

  • i равен 3 (первый элемент a.set - давайте пока предположим этот порядок).
    • k равно 3 (то же, что и выше)
    • k равно 4 - следовательно, условие if во внутреннем цикле выполняется, и метод возвращается с true.

Как видите, у вас нет шансов перебрать все значения a.set перед возвратом из метода.

2 голосов
/ 03 апреля 2012

Используйте "break" вместо "return", оно прерывает только один уровень

1 голос
/ 03 апреля 2012

На основе предоставленного вами кода и данных внутренний цикл выйдет из функции с возвращением true во второй итерации.В вашем коде нет способа для внешнего foreach повторяться более одного раза.

Если вы хотите написать код, который возвращает true, если в любой точке установленное значение a имеет число меньше установленного b, вы должны сделать это:

foreach (int i in a.set)
{
    foreach (int k in b.set)
    {
        if (i < k)
        {
            return true;                                
        }
    }
}
return false;
1 голос
/ 03 апреля 2012

Это потому, что вы выходите из foreach-loop, возвращая значение на первой итерации.

0 голосов
/ 03 апреля 2012

Возможно, вы захотите использовать break вместо return - когда вы вернетесь (что произойдет на второй итерации внутреннего цикла, когда 3> 4), он остановит выполнение цикла и вернется из функции / метода, которую вы иметь это в

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...