c#强制循环检查条件

时间:2009-08-02 12:52:19

标签: c# loops

如何在每个执行行之后强制循环检查其条件,而不是仅在整个块完成时?

我有一段时间(!语句){}循环,但语句可以通过几种不同的方法进行更改,并且应该强制循环在当前行之后立即中断在循环中已完成执行;而不是整个循环块完成一个循环。

有没有办法做到这一点?

6 个答案:

答案 0 :(得分:12)

根据您的操作,您可以考虑将每个语句作为委托,创建一个委托数组,并在整个数组中运行for循环。这样循环只有两行:一行检查条件,以及何时在当前数组位置执行委托。

答案 1 :(得分:3)

是的,但你不会喜欢它......只需在每条指令后放一个if (!condition) break;;)

答案 2 :(得分:3)

这不是语言的工作方式。您必须定期检查:

while (processing)
{
    actionA();

    if (!processing)
        break;

    actionB();

    if (!processing)
        break;

    actionC();
}

答案 3 :(得分:3)

让这些方法抛出一个自定义异常并在循环中为特定异常设置try-catch。

while (!condition) {
        try {
            //method calls
        } catch (CustomException ce) {
            break;
        }
    }

答案 4 :(得分:2)

您可以创建自定义迭代器(使用yield语句)。迭代器将返回您要执行的每一行(或多行)(使用匿名方法)。然后,您可以逐个遍历每一行,并检查内部循环中的条件。以下是它的外观:

public delegate void DelegateType();

public static IEnumerable< DelegateType > GetStatements()
{
    // ---- replace with your code below ----
    yield return delegate() { Console.WriteLine("statement 1"); };
    yield return delegate() { Console.WriteLine("statement 2"); };
    yield return delegate() { Console.WriteLine("statement 3"); };
    yield return delegate() 
    { 
        // You can return multiples statements in one block.
        Console.WriteLine("statement 4"); 
        Console.WriteLine("statement 5");
    };
}

以下是在每个语句之后迭代语句并检查条件的方法。

IEnumerable<DelegateType> statementList = GetStatements();
foreach (DelegateType statement in statementList)
{
    statement();                   // Here is where your statement executes.
    if (!ConditionContinue())      // Check your condition here.
    {
        break;
    }
}

答案 5 :(得分:1)

我认为在每行可以改变值之后你需要一个if语句,如果满足条件则需要中断。