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个元素,为什么呢?
答案 0 :(得分:7)
你回归内循环。这会立即退出包含方法。
i
是3
(a.set
的第一个元素 - 让我们假设现在订购了)。
k
为3
(与上述相同)k
为4
- 因此符合内部循环中的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),它将停止执行循环并从函数/方法返回你有这个