2013-04-12 90 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; 
}