嵌套的foreach循环c#

时间:2012-04-03 11:47:50

标签: c# loops foreach

        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 个答案:

答案 0 :(得分:7)

你回归内循环。这会立即退出包含方法。

  • i3a.set的第一个元素 - 让我们假设现在订购了)。
    • k3(与上述相同)
    • k4 - 因此符合内部循环中的if条件,方法将返回true

正如您所看到的,在从方法返回之前,您没有机会迭代a.set的所有值。

答案 1 :(得分:2)

使用“面包”代替“返回”,它只会中断一个级别

答案 2 :(得分:1)

这是因为您通过在第一次迭代时返回值退出foreach-loop

答案 3 :(得分:1)

根据您提供的代码和数据,内部循环将退出函数,并在第二次迭代时返回true。您的代码中没有办法让外部foreach迭代多次。

如果你想编写返回true的代码,如果在任何时候设置a的数字小于设置b,你应该这样做:

foreach (int i in a.set)
{
    foreach (int k in b.set)
    {
        if (i < k)
        {
            return true;                                
        }
    }
}
return false;

答案 4 :(得分:0)

也许你想使用break而不是return - 当你返回时(这将发生在内部循环的第二次迭代时3> 4),它将停止执行循环并从函数/方法返回你有这个