I would like to shorten the following code, however I'm not sure where to start.
Is the switch path for this?
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;
}
I am not familiar with switches, but is there any way that they can be used in this situation?
Thanks in advance, Matt
EDIT - EDIT - EDIT - EDIT - EDIT
Thank you all for your input.
The following code is what I ended up using:
static string RevisedConversionFunction(string input, string from, string to)
{
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);
double amount;
Double.TryParse(input, out amount);
return Convert.ToString(Math.Round(((amount / rates[from]) * rates[to]), 2));
}
source
share