【问题标题】:c# switch function error, maybe a misunderstanding of the format?c#switch函数报错,可能是对格式的误解?
【发布时间】:2022-01-25 01:38:18
【问题描述】:

您好,我尝试使用此代码为我的作业创建一个迷你货币转换器,但我不明白为什么它不起作用,请告诉我为什么会这样,谢谢。

错误表明已经定义了 newValue。

switch (userCurrency)
                {
                    case "USD":
                        double newValue = userEuro * usd;
                        break;

                    case "GBP":
                        double newValue = userEuro * gbp;
                        break;

                    case "CHF":
                        double newValue = userEuro * chf;
                        break;

                    case "AUD":
                        double newValue = userEuro * aud;
                        break;

                    case "CAD":
                        double newValue = userEuro * cad;
                        break;
                    default:
                        Console.WriteLine("Invalid input!");
                        break;

                }

【问题讨论】:

  • 旁注:您不应该使用double 表示货币:decimal 的行为更像人类的预期。
  • 因为您尝试声明 5 个不同的 newValue 变量。你可以只声明一个并且只需要一个。

标签: c# switch-statement


【解决方案1】:

在 switch case 块范围之外提取 newValue 声明,然后在不同的 switch case 中分配它

double newValue;
switch (userCurrency)
{
    case "USD":
       newValue = userEuro * usd;
       break;

    case "GBP":
        newValue = userEuro * gbp;
        break;

    case "CHF":
        newValue = userEuro * chf;
        break;

    case "AUD":
        newValue = userEuro * aud;
        break;

    case "CAD":
        newValue = userEuro * cad;
        break;
    default:
        Console.WriteLine("Invalid input!");
        break;
}

【讨论】:

    【解决方案2】:

    在 switch 语句之前定义“newValue”:

    double newValue;
    switch (userCurrency)
    {
       case "USD":
         newValue = userEuro * usd;
       break;
    ...
    

    【讨论】:

    • 非常感谢!
    【解决方案3】:

    不要在每个case 中声明newValue:在switch 上方声明一次(不分配值),然后在每个case 中分配一个值。

    或者也许使用“开关表达式”来代替。

    【讨论】:

    • 非常感谢!
    猜你喜欢
    • 2011-03-13
    • 2012-05-10
    • 2018-09-27
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    • 2021-11-29
    • 2018-10-20
    • 2013-07-27
    相关资源
    最近更新 更多