使用枚举切换语句 - 或(||)和(&&)

时间:2015-05-06 14:00:21

标签: c# enums switch-statement

我正在制作一个项目,我有一个问题。我有3个这样的枚举状态:

enum GameLevel
{
     Level1,
     Level2,
     None,
}

我的代码中有一部分我要检查是否有任何级别被选中或没有,所以我想做类似的事情:

case !GameLevel.None

case GameLevel.Level1 || GameLevel.Level2

这可能吗?

3 个答案:

答案 0 :(得分:9)

各种选择:

使用默认开关:

switch (level)
{
    case GameLevel.None:
        // Whatever
        break;
    default:
        // Do something else
        // break
}

使用具有明确案例的开关:

// 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)
{
    ...
}

答案 1 :(得分:1)

切换不是用来获得"不是这种情况" -case。但是,当其他情况为" false"时,您可以使用始终执行的default:个案。

!GameLevel.None更好地使用if案例。 if(selectedGameLevel != GameLevel.None) { }

答案 2 :(得分:0)

我认为作业的选择应该基于您计划实施的级别。对于较少的级别(如您的示例所示),我将使用if和else if而不是使用switch。如果有更多选项,则切换只能更好地工作,因为它会以不同的方式执行以加快执行速度。 Jon Skeet的回答将指导您如何实施您的选择。