如果在c#中返回语句

时间:2013-04-12 19:13:04

标签: c# if-statement return override

我重写了一个虚方法,我需要根据bool表达式返回一个值。

  public override float Q()
    {
        return (float)Math.Sqrt(2 * A* B / C);
    }

如果上面显示的计算值小于D,我需要为Q()返回一个本地成员(称之为D)。我尝试使用常规if语句,但它不会返回值,除非它返回到如果声明。任何帮助将不胜感激。

5 个答案:

答案 0 :(得分:8)

如何完全跳过if

return Math.Max(D, Math.Sqrt (2*A*B/C));

或使用三元运算符

return  Math.Sqrt (2*A*B/C) < D ? D :  Math.Sqrt (2*A*B/C); // too verbose but you get the idea

答案 1 :(得分:0)

我认为这会起作用

public override float Q(){
    var returnValue = (float)Math.Sqrt(2 * A * B / C);

    if (returnValue < D){
        return D;
    }

    return returnValue;
}

编辑:
或者你可以清理它

public override float Q(){
    var returnValue = (float)Math.Sqrt(2 * A * B / C);

    return returnValue < D ? D : returnValue;
}

答案 2 :(得分:0)

public override float Q()
{
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < D ? D : result;
}

答案 3 :(得分:0)

除非这是一个技巧问题,因为D是本地的,所以代码应如下所示:

public override float Q()
{
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < D ? D : result;
}

但请注意,D必须是float,或者如果不是float则转化为D。此外,如果float不是public override float Q() { var d = (float)D; var result = (float)Math.Sqrt(2 * A* B / C); return result < d ? d : result; } ,您可能只想执行此类操作,因为其类型可能无法隐式转换:

{{1}}

答案 4 :(得分:0)

这样的事情:

public override float Q(){
    var r = (float)Math.Sqrt(2 * A * B / C);

    if (r < D){
        r = D;
    }

    return r;
}