我希望能够缩短下面的代码,但是我不知道从哪里开始。
使用switch语句是否适合这种情况?
static string RevisedConversionFunction(string input, string from, string to)
{
double exchangeRateUSD;
double exchangeRateAUD;
double exchangeRateCAD;
double exchangeRateEUR;
double exchangeRateGBP;
double exchangeRateNZD;
double fromExchangeRate;
double toExchangeRate;
exchangeRateUSD = 1;
exchangeRateAUD = 1.31;
exchangeRateCAD = 1.28;
exchangeRateEUR = 0.95;
exchangeRateGBP = 0.68;
exchangeRateNZD = 1.36;
fromExchangeRate = 0;
toExchangeRate = 0;
if (from.Equals("USD"))
{
fromExchangeRate = exchangeRateUSD;
}
if (from.Equals("AUD"))
{
fromExchangeRate = exchangeRateAUD;
}
if (from.Equals("CAD"))
{
fromExchangeRate = exchangeRateCAD;
}
if (from.Equals("EUR"))
{
fromExchangeRate = exchangeRateEUR;
}
if (from.Equals("GBP"))
{
fromExchangeRate = exchangeRateGBP;
}
if (from.Equals("NZD"))
{
fromExchangeRate = exchangeRateNZD;
}
if (to.Equals("USD"))
{
toExchangeRate = exchangeRateUSD;
}
if (to.Equals("AUD"))
{
toExchangeRate = exchangeRateAUD;
}
if (to.Equals("CAD"))
{
toExchangeRate = exchangeRateCAD;
}
if (to.Equals("EUR"))
{
toExchangeRate = exchangeRateEUR;
}
if (to.Equals("GBP"))
{
toExchangeRate = exchangeRateGBP;
}
if (to.Equals("NZD"))
{
toExchangeRate = exchangeRateNZD;
}
double amount;
Double.TryParse(input, out amount);
amount = (amount / fromExchangeRate) * toExchangeRate;
amount = Math.Round(amount, 2);
string result = Convert.ToString(amount);
return result;
}
我不熟悉交换机,但它们可以在这种情况下使用吗?
提前致谢, 马特
编辑-编辑-编辑-编辑-编辑
感谢大家的建议。
以下代码是我最终使用的:
static string RevisedConversionFunction(string input, string from, string to)
{
//Exchange Rates
Dictionary<string, double> rates = new Dictionary<string, double>();
rates.Add("USD", 1);
rates.Add("AUD", 1.31);
rates.Add("CAD", 1.28);
rates.Add("EUR", 0.95);
rates.Add("GBP", 0.68);
rates.Add("NZD", 1.36);
//Conversion
double amount;
Double.TryParse(input, out amount);
return Convert.ToString(Math.Round(((amount / rates[from]) * rates[to]), 2));
}