我重写了一个虚拟方法,我需要返回一个值取决于bool表达式。如果在c#中返回语句#
public override float Q()
{
return (float)Math.Sqrt(2 * A* B/C);
}
我需要返回本地成员(称为D)为Q()如果上面显示的计算出的值小于D.我尝试使用常规的if语句,但它不会返回,除非一个值它在if语句之外返回。任何帮助,将不胜感激。
我重写了一个虚拟方法,我需要返回一个值取决于bool表达式。如果在c#中返回语句#
public override float Q()
{
return (float)Math.Sqrt(2 * A* B/C);
}
我需要返回本地成员(称为D)为Q()如果上面显示的计算出的值小于D.我尝试使用常规的if语句,但它不会返回,除非一个值它在if语句之外返回。任何帮助,将不胜感激。
我认为这会工作
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;
}
如何完全跳过了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
我认为你的意思是'Math.Max'。 – TheBuzzSaw
@TheBuzzSaw是的,谢谢 –
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;
}
请告诉我们你尝试过什么。 – SLaks
那么基础类或派生类上面的代码是什么?你想让派生类返回基类的值 –