我重写了一个虚方法,我需要根据bool表达式返回一个值。
public override float Q()
{
return (float)Math.Sqrt(2 * A* B / C);
}
如果上面显示的计算值小于D,我需要为Q()返回一个本地成员(称之为D)。我尝试使用常规if语句,但它不会返回值,除非它返回到如果声明。任何帮助将不胜感激。
答案 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;
}