仅在条件为真时返回(不使用if)

时间:2016-04-26 07:53:26

标签: c#

我问自己是否有可能在一个只在条件为真但没有使用sum({@X}) 语句时才执行的方法中使用return。如果条件为假,则不会返回任何内容。

为了更好地理解:

if
然后

public bool MyMethod() { if (HasErrors()) return HasErrors(); // Some more code } 也会返回一些东西。我现在想到这样的事情:

Some more code

但只有在public bool MyMethod() { return HasErrorsButReturnsOnlyIfTrue(); // Some more code } 返回true时才需要执行return HasErrorsButReturnsOnlyIfTrue();。否则会被跳过。

是否有可能在不使用HasErrors()的情况下实现类似的目标?

3 个答案:

答案 0 :(得分:3)

这可能是你最接近的:

public bool MyMethod()
{
    return HasErrors()
        ? true
        : SomeMoreCode();
}

请注意,这意味着您必须提供更多代码'在一个单独的方法中,该方法现在还必须返回一个布尔值。

答案 1 :(得分:0)

免责声明:这只是一个笑话。

public bool MyMethod()
{
    try
    {
        return HasErrorsButReturnsOnlyIfTrue();
    }
    catch
    {
        // Some more code
        Console.WriteLine("Test");
        return false;
    }
}

public bool HasErrorsButReturnsOnlyIfTrue()
{
    if (some condition)
        return true;
    else
        throw new Exception();
}

答案 2 :(得分:0)

制作一个nullable function

void bool? isBar()
{
    SomeObj someObj = check(); // Returns someObj;
    if (someObj == null)
        return false; // Nothing there
    else if (someObj.something == 1)
        return null; // It's there! Don't return!
    else
        return true; // Something's there, but not what we want
}

void doSth()
{
    bool? isValid = isBar();
    if (isValid != null)
        return (bool)isValid;
}

或者,可以通过构造指示是否返回的结构或类来完成此操作。

struct Validator
{
    public bool ShouldReturn;
    public bool ReturnBool; // Could skip this and just make ShouldReturn nullable like the above example
    public string ErrMsg;
}