1

仮想メソッドをオーバーライドしていて、bool 式に応じて値を返す必要があります。

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

上記の計算値が D より小さい場合、Q() のローカル メンバー (D と呼びます) を返す必要があります。通常の if ステートメントを使用してみましたが、if ステートメントの外で返されない限り、値を返しません。どんな助けでも大歓迎です。

4

5 に答える 5

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
于 2013-04-12T19:16:34.543 に答える
0

私はこれがうまくいくと思うだろう

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;
}
于 2013-04-12T19:15:46.617 に答える
0
public override float Q()
{
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < D ? D : result;
}
于 2013-04-12T19:17:19.013 に答える
0

これがひっかけ問題でない限り、これはDクラスにローカルであるため、コードは次のようになります。

public override float Q()
{
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < D ? D : result;
}

ただし、そうでない場合は、戻り時に aまたは a にキャストするD必要があることに注意してください。さらに、型が暗黙的に変換できない可能性があるため、次のようなことをしたい場合があります。floatfloatDfloat

public override float Q()
{
    var d = (float)D;
    var result = (float)Math.Sqrt(2 * A* B / C);
    return result < d ? d : result;
}
于 2013-04-12T19:17:19.147 に答える
0

このようなもの:

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

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

    return r;
}
于 2013-04-12T19:17:24.233 に答える