rel*_*sis 4 c# enums switch-statement
我有一个枚举和一个基于该枚举的switch语句,如下所示:
public enum MyEnum
{
VAL1,
VAL2,
VAL3,
ONE = 1,
TWO = 2
}
Run Code Online (Sandbox Code Playgroud)
和开关:
switch ((MyEnum)Enum.Parse(typeof(MyEnum), input.ToUpper()))
{
case MyEnum.VAL1:
Console.WriteLine("val1");
break;
case MyEnum.VAL2:
Console.WriteLine("val2");
break;
case MyEnum.VAL3:
Console.WriteLine("val3");
break;
case MyEnum.ONE:
Console.WriteLine("1");
break;
default:
Console.WriteLine("default");
break;
}
Run Code Online (Sandbox Code Playgroud)
其中input是一个字符串.我遇到的问题是我有编译器错误,
标签'case 1:'已经出现在switch语句中
我发现在枚举中首先移动'ONE'元素可以解决问题,但我的问题是为什么会发生这种情况?
好吧,因为当你有:
public enum MyEnum
{
VAL1,
VAL2,
VAL3,
ONE = 1,
TWO = 2
}
Run Code Online (Sandbox Code Playgroud)
你基本上有:
public enum MyEnum
{
VAL1 = 0,
VAL2 = 1,
VAL3 = 2,
ONE = 1,
TWO = 2
}
Run Code Online (Sandbox Code Playgroud)
你现在看到问题出在哪里了?您需要为它们分配不同的值.