簡體   English   中英

如果在C#中返回語句

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM