我正在重写一个虚拟方法,我需要根据布尔表达式返回一个值。
public override float Q()
{
return (float)Math.Sqrt(2 * A* B / C);
}
如果上面显示的计算值小于 D,我需要为 Q() 返回一个本地成员(称为 D)。我尝试使用常规 if 语句,但它不会返回值,除非它在 if 语句之外返回。任何帮助,将不胜感激。
我正在重写一个虚拟方法,我需要根据布尔表达式返回一个值。
public override float Q()
{
return (float)Math.Sqrt(2 * A* B / C);
}
如果上面显示的计算值小于 D,我需要为 Q() 返回一个本地成员(称为 D)。我尝试使用常规 if 语句,但它不会返回值,除非它在 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;
}
编辑:
或者你可以清理它
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
需要在返回时为 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;
}
像这样的东西:
public override float Q(){
var r = (float)Math.Sqrt(2 * A * B / C);
if (r < D){
r = D;
}
return r;
}