做循环,一种有效的破解方法?

时间:2014-04-04 19:07:19

标签: c#

我在方法中有一个部分也做了类似的事情:

do
{
    // some query

    // another query

    if another query != null
    {
        // return something
    }

}while(some query != null)

显然这不起作用,因为在循环内部之前不会声明某些查询。我试过的一个解决方案是

bool flag = false;
do
{
    // some query

    if some query == null
    {
        flag = true;
        // or 
        break;
    }

    // another query

    if another query != null
    {
        // return something
    }

}while(flag != true)

这两种方法都没有让我真正满意,老实说,我不确定它们是否会被认为是良好的编码习惯,这让我很烦恼。此外,直到这一点,我已经在这样的情况下解决了这个问题,但是由于标志的垃圾特性,我想知道是否有更好的方法来处理这个以供将来参考,而不是制作垃圾变量。我应该注意到我想到的其他解决方案可能会更加丑陋。该解决方案是在循环外部运行查询,并将其转换为while循环并在其自身内部再次调用查询,而不是do循环。

虽然代码与上述解决方案一起工作,但我想知道是否有人有更好的解决方案,不需要一个可以说是无意义的变量。

虽然我明白这样一个更好的解决方案可能是不可能的,或者甚至是非常需要的,但即使尝试也可能是荒谬的。

3 个答案:

答案 0 :(得分:1)

拥有breakflag变量并不会导致效率低下,这就是你应该关注的循环内部。换句话说,这只是一种偏好,也可以。

答案 1 :(得分:1)

我认为你需要

while(true)
{
// some query

if some query == null
{
    break;
}

// another query

if another query != null
{
    // return something
}}

答案 2 :(得分:1)

你可以试试这个:

do
{
    // some query

    if some query == null
    {
        break;
    }

    // another query

    if another query != null
    {
        // return something
    }

}while(true);