2013-04-12 65 views
1

我重写了一个虚拟方法,我需要返回一个值取决于bool表达式。如果在c#中返回语句#

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

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

+4

请告诉我们你尝试过什么。 – SLaks

+0

那么基础类或派生类上面的代码是什么?你想让派生类返回基类的值 –

回答

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; 
} 
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 
+0

我认为你的意思是'Math.Max'。 – TheBuzzSaw

+0

@TheBuzzSaw是的,谢谢 –

0
public override float Q() 
{ 
    var result = (float)Math.Sqrt(2 * A* B/C); 
    return result < D ? D : result; 
} 
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; 
} 
0

事情是这样的:

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

    if (r < D){ 
     r = D; 
    } 

    return r; 
}