我重寫了一個虛擬方法,我需要返回一個值取決於bool表達式。如果在c#中返回語句#
public override float Q()
{
return (float)Math.Sqrt(2 * A* B/C);
}
我需要返回本地成員(稱爲D)爲Q()如果上面顯示的計算出的值小於D.我嘗試使用常規的if語句,但它不會返回,除非一個值它在if語句之外返回。任何幫助,將不勝感激。
我重寫了一個虛擬方法,我需要返回一個值取決於bool表達式。如果在c#中返回語句#
public override float Q()
{
return (float)Math.Sqrt(2 * A* B/C);
}
我需要返回本地成員(稱爲D)爲Q()如果上面顯示的計算出的值小於D.我嘗試使用常規的if語句,但它不會返回,除非一個值它在if語句之外返回。任何幫助,將不勝感激。
我認爲這會工作
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;
}
如何完全跳過了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
我認爲你的意思是'Math.Max'。 – TheBuzzSaw
@TheBuzzSaw是的,謝謝 –
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;
}
請告訴我們你嘗試過什麼。 – SLaks
那麼基礎類或派生類上面的代碼是什麼?你想讓派生類返回基類的值 –