Switch语句中的案例0

时间:2017-11-29 02:06:25

标签: c# enums switch-statement

我在C#中使用了switch语句,我意识到,虽然switch语句中传递的变量是枚举,但switch语句不会为case 0抛出错误,但是对于case 1,2,会抛出错误, 3 ... 我想知道为什么会这样。 我知道如何在开关盒中使用枚举,我不需要帮助,我想知道为什么它不会抛出0的错误。因为0是一个整数。

这是代码,这个编译没有任何错误。 MathOperator是一个枚举。

 public double Test5(double num1, double num2, MathOperator op)
    {
        double answer=0;
        switch (op)
        {

            case 0:
                {
                    break;
                }

        }
        return answer;
    }

感谢您回答我的问题!

2 个答案:

答案 0 :(得分:2)

C#规范第13章“转换”中有一条规则:

  

13.1.3隐式枚举转换
  隐式枚举转换允许将decimal-integer-literal 0转换为任何枚举类型。

所以0在这里是特殊的,没有其他整数文字。

答案 1 :(得分:0)

试试这个。您需要一个默认大小写来处理传递到当前不在您的MathOperator语句中的方法Test5的所有其他switch,我认为这是您的问题。一个经验法则是使用一个switch case来检查enum中列出的所有enum成员。

 public double Test5(double num1, double num2, MathOperator op)
 {
    double answer=0;
    switch (op)
    {
        // Use it like this.
        case MathOperator.YourOperator:
        {
            break;
        }
        case MathOperator.Multiply:
        {
            break;
        }
        default:
        {
            // Other cases
        }
    }
    return answer;
}