我有一个检查某些东西并根据这些检查返回 bool 值的方法。它涉及单个分支If部分,该部分按顺序检查大约5个条件。如果这些条件中的任何一个返回true,则该方法将为return true;。如果没有一个条件返回true,则该方法将为return false;。由于If部分后面的代码仅在没有条件成立的情况下才会运行,因此该代码在逻辑上等同于包含实际的Else语句。

因此,在这种情况下实际在Else语句中编写是一个更好的主意吗?

编辑

事实证明,对于某些情况,我需要有关哪个条件实际使“true”跳闸的信息,因此我更改了返回int的方法,其中-1表示“false”情况。逻辑仍然存在,如果没有一个条件为真,它将返回-1。因此,我不再具有return (cond1 || cond2 || cond3 || cond4 || cond5);的可压缩选项,但我也感谢每个人的建议,因为我确实没有考虑过(主要是因为cond3是非常复杂的条件,涉及检查两对DateTime的中点的交点对象,因此看起来很难看)。虽然方法的性质已更改,但此问题的性质尚未更改,所有答案仍基本上适用...

该代码目前是释义,并切掉所有通过cond5定义cond1的无关代码...

if (cond1) { return 1; }
else if (cond2) { return 2; }
else if (cond3) { return 3; }
else if (cond4) { return 4; }
else if (cond5) { return 5; }

最佳答案

我倾向于这样的事情而不是返回硬值。

static bool SomeFunc(string arg)
{
    bool result = false;

    if (arg.Length < 10)
    {
        result = true;
    }
    else if (arg.StartsWith("foo"))
    {
        result = true;
    }

    if (!result && arg.EndsWith("foo"))
    {
        result = true;
    }

    return result;
}

关于c# - 在用于方法返回的If-Else语句中,如果可以隐式地遵循Else,是否应该明确说明Else?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2676678/

10-13 22:31