首页 > 解决方案 > 链接多个 IF - 仅当 current 为 false 时才评估 next

问题描述

我有一个方法可以检查多个条件以进一步执行,只有在当前条件评估为 false 时才继续执行下一个,否则该方法将退出而不评估进一步的条件。并且条件的数量在不同的实现(子类)中有所不同。

我受限于我的创造力,使它看起来比使用可怕的 goto 语句更好。有没有更好的方法来执行以下操作:

    public bool DoSomething()
    {
        bool result = true;

        if (exclusion1)
        {
            result = false; goto Exit_Now;
        }
        if (exclusion2)
        {
            result = false; goto Exit_Now;
        }
        if (exclusion3)
        {
            result = false; goto Exit_Now;
        }
        if (exclusion4)
        {
            result = false; goto Exit_Now;
        }
        if (exclusion5)
        {
            result = false; goto Exit_Now;
        }

        if (result)
        {
            //do something
        }

    Exit_Now:
        return result;
    }

编辑:针对答案,我理解使用“else if”和条件 OR '||' 运营商是显而易见的选择:

子查询:哪个性能更高?我问是因为这发生在一个循环内,每次评估大约需要 30-40 毫秒。如果没有上面给出的代码中的 goto 语句,应该在一分钟内完成的工作最多需要两分钟。因此,查询。感谢所有的帮助。

标签: c#

解决方案


如果您可以将排除测试放入 if 语句中,只需使用else if语句;


        if (exclusion1)
        {
            result = false;
        }
        else if (exclusion2)
        // etc ...
        else if (result)
        {
            //do something
        }

但我发现早点回来要简单得多,也更容易阅读。

        if (exclusion1)
            return false;

推荐阅读