1

我正在重写一个虚拟方法,我需要根据布尔表达式返回一个值。

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

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

4

5 回答 5

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
于 2013-04-12T19:16:34.543 回答
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;
}
于 2013-04-12T19:15:46.617 回答
0
public override float Q()
{
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < D ? D : result;
}
于 2013-04-12T19:17:19.013 回答
0

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

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

但请注意,如果不是,则D需要在返回时为 afloat或强制转换为 a 。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;
}
于 2013-04-12T19:17:19.147 回答
0

像这样的东西:

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

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

    return r;
}
于 2013-04-12T19:17:24.233 回答