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语句之外返回。
干脆跳过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;
}