带枚举的 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 的回答将指导您如何实施您所做的选择。