如何缩短以下C#if语句?
发布时间:2020-12-16 10:51:42 所属栏目:百科 来源:网络整理
导读:我想缩短以下代码,但我不知道从哪里开始. 交换机是否可以采用这种方式? static string RevisedConversionFunction(string input,string from,string to) { double exchangeRateUSD; double exchangeRateAUD; double exchangeRateCAD; double exchangeRateEU
我想缩短以下代码,但我不知道从哪里开始.
交换机是否可以采用这种方式? 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 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)); } 解决方法
>在这种情况下,我会使用字典
>使用decimal而不是double来防止舍入问题 码: static string RevisedConversionFunction(string input,string to) { Dictionary<string,decimal> dExchange = new Dictionary<string,decimal>() { {"USD",1},{"AUD",1.31m},{"CAD",1.28m},{"EUR",0.95m},{"GBP",0.68m},{"NZD",1.36m} }; if (dExchange.ContainsKey(from) && dExchange.ContainsKey(to)) { return Math.Round((decimal.Parse(input) / dExchange[from]) * dExchange[to],2).ToString(); } else { // at least one currency not in the dictionary - exception handling? return null; } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |