我還沒有使用過泛型,所以無法弄清楚是否可以將以下三種方法變成一種使用泛型來減少重複的方法。其實我的代碼目前有六種方法,但如果你可以解決這三個問題,那麼剩下的就可以用同樣的解決方案工作。如何將這3種方法變成一種使用C#泛型的方法?
private object EvaluateUInt64(UInt64 x, UInt64 y)
{
switch (Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
private object EvaluateFloat(float x, float y)
{
switch(Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
private object EvaluateDouble(double x, double y)
{
switch (Operation)
{
case BinaryOp.Add:
return x + y;
case BinaryOp.Subtract:
return x - y;
case BinaryOp.Multiply:
return x * y;
case BinaryOp.Divide:
return x/y;
case BinaryOp.Remainder:
return x % y;
default:
throw new ApplicationException("error");
}
}
我建立一個簡單的表達式解析器,則需要評估的簡單的二進制運算,如加法/減法等我用上面的方法來獲取實際的數學使用相關的類型進行。但是必須有更好的答案!
與流行的猜測相反,Marc和我實際上是兩個不同的人。我們似乎偶爾分享一下心靈。 – 2008-10-05 08:17:04
也許我們只是認爲......曾經見過搏擊俱樂部? – 2008-10-05 08:20:27