繁体   English   中英

嵌套的foreach循环C#

[英]Nested foreach loops c#

        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。一组包括3,4,5

问题是外循环仅迭代一次。 但是它包含3个元素,为什么呢?

您在内循环中返回。 这将立即退出包含方法。

  • i3a.set的第一个元素–现在假设该顺序)。
    • k3 (与上述相同)
    • k4 –因此满足内部循环中的if条件,并且该方法返回true

如您所见,从方法返回之前,您没有机会遍历a.set所有值。

使用“返回”指示的“中断”,它仅中断一个级别

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

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

如果要编写返回true的代码,则在任何时候set a的数字都小于set b ,则应这样做:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM