我在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;
}
感谢您回答我的问题!
答案 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;
}