在C#中,在 switch语句中, case标签中不允许使用非常量值。如果需要支持非常量值,则必须使用 if语句。
我的问题很简单:switch
内部实现是否限制为常量值允许某种优化,否则无法完成?我基本上要问的是这两个代码片段是否会完全相同:
switch (myEnumVariable)
{
case MyEnum.Value1:
....
break;
case MyEnum.Value2:
.....
....
default:
....
}
if (myEnumVariable == MyEnum.Type1)
{
....
}
else if (myEnumVariable == MyEnum.Type2)
{
....
}
...
else
{
....
}
或者 switch语句由于其限制而具有优势。如果没有,为什么有限制?