加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何缩短以下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; 
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读