带枚举的 Switch 语句 - 或 (||) 和 (&&)
Switch Statement with Enum - Or (||) and (&&)
我正在做一个项目,我有一个问题。我有 3 个这样的枚举状态:
enum GameLevel
{
Level1,
Level2,
None,
}
我的代码中有一部分我想检查是否选择了任何级别或 none,所以我想做类似的事情:
case !GameLevel.None
或
case GameLevel.Level1 || GameLevel.Level2
这可能吗?
多种选择:
使用默认开关:
switch (level)
{
case GameLevel.None:
// Whatever
break;
default:
// Do something else
// break
}
在显式情况下使用 switch:
// Note: if you add a Level3, you'd need to change this...
switch (level)
{
case GameLevel.Level1:
case GameLevel.Level2:
// Whatever
break;
}
使用 if
语句:
if (level != GameLevel.None)
{
...
}
开关不用于获得 "its not the case"-case。但是,当其他情况为 "false".
时,您可以使用始终执行的 default:
情况
为了您的 !GameLevel.None
最好使用 if 案例。 if(selectedGameLevel != GameLevel.None) { }
我认为任务的选择应该基于您计划实施的级别。对于较少的级别(如您的示例所示),我会使用 if 和 else if 而不是使用 switch。 Switch 只有在有更多选项时才能更好地工作,因为它会以不同的方式执行以加快执行速度。 Jon Skeet 的回答将指导您如何实施您所做的选择。
我正在做一个项目,我有一个问题。我有 3 个这样的枚举状态:
enum GameLevel
{
Level1,
Level2,
None,
}
我的代码中有一部分我想检查是否选择了任何级别或 none,所以我想做类似的事情:
case !GameLevel.None
或
case GameLevel.Level1 || GameLevel.Level2
这可能吗?
多种选择:
使用默认开关:
switch (level)
{
case GameLevel.None:
// Whatever
break;
default:
// Do something else
// break
}
在显式情况下使用 switch:
// Note: if you add a Level3, you'd need to change this...
switch (level)
{
case GameLevel.Level1:
case GameLevel.Level2:
// Whatever
break;
}
使用 if
语句:
if (level != GameLevel.None)
{
...
}
开关不用于获得 "its not the case"-case。但是,当其他情况为 "false".
时,您可以使用始终执行的default:
情况
为了您的 !GameLevel.None
最好使用 if 案例。 if(selectedGameLevel != GameLevel.None) { }
我认为任务的选择应该基于您计划实施的级别。对于较少的级别(如您的示例所示),我会使用 if 和 else if 而不是使用 switch。 Switch 只有在有更多选项时才能更好地工作,因为它会以不同的方式执行以加快执行速度。 Jon Skeet 的回答将指导您如何实施您所做的选择。