首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Switch语句中的Case 0

Switch语句中的Case 0
EN

Stack Overflow用户
提问于 2017-11-29 10:06:25
回答 2查看 3.4K关注 0票数 1

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

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

代码语言:javascript
复制
 public double Test5(double num1, double num2, MathOperator op)
    {
        double answer=0;
        switch (op)
        {

            case 0:
                {
                    break;
                }

        }
        return answer;
    }

感谢您回答我的问题!

EN

回答 2

Stack Overflow用户

发布于 2017-11-29 10:16:26

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

13.1.3隐式枚举转换

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

所以0在这里是特殊的,这是其他整数所不能比拟的。

票数 2
EN

Stack Overflow用户

发布于 2017-11-29 10:12:42

尝尝这个。您需要一个缺省用例来处理传递到方法Test5中的所有其他MathOperator,这些方法当前不在您的switch语句中,我认为这就是您的用例中的问题所在。经验法则是有一个交换案例,它检查您的enum中列出的所有enum成员。

代码语言:javascript
复制
 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;
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47543904

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档