[英]if return statement in c#
我覆蓋了一個虛方法,我需要根據布爾表達式返回一個值。
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
必須為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;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.