2

我有 2 个 while 循环,第二个有一个中断;(见下面的代码)

我的问题是:中断会导致第二个循环或第二个循环停止吗?

while select dirPartyRelationship
join    dirPartyTable
    where dirPartyTable.RecId == dirPartyRelationship.ChildParty
join    dirPersonName
    where   dirPersonName.Person == dirPartyTable.RecId
{
    while select checkDirRelationship
        where checkDirRelationship.ChildParty == dirPartyRelationship.RecId
    {
        if (checkDirRelationship.RelationshipTypeId == _relationshipType)
        {
            break;
        }
    }...
4

1 回答 1

2

break 只会跳出当前的代码块。

创建作业并使用此示例代码;

for(i=0; i<100; i++)
    {
        for(j=0; j<100; j++)
        {
            info(strfmt("inner loop count %1",j));
            break;
        }
        info(strfmt("outer loop count %1",i));
    }

您将看到一个 j 永远不会超过 0,但被打印 100 次的快速示例。

编辑;

如果你想跳出嵌套循环,你可以通过在内部循环中的行之前声明 a boolean,可能被调用breakAll并设置breakAll为 true 来解决。break;在外循环中检查breakAll这样的;

for(i=0; i<100; i++)
    {
        for(j=0; j<100; j++)
        {
            info(strfmt("inner loop count %1",j));
            if (somethingToCheck)
            {
                breakAll = true;
                break;
            }
        }
        info(strfmt("outer loop count %1",i));
        if (breakAll)
        {
             break;
        }
    }
于 2012-10-23T09:20:02.990 回答