c#中的If返回语句

本文关键字:语句 返回 If 中的 | 更新日期: 2023-09-27 18:08:48

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

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

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

c#中的If返回语句

干脆跳过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

我想这是可行的

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

EDIT:
或者你可以把它清理成这个

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

除非这是一个技巧问题,因为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;
}

像这样:

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