C# '||';switch语句中两个枚举之间要使用的运算符

C# '||';switch语句中两个枚举之间要使用的运算符,c#,switch-statement,or-operator,C#,Switch Statement,Or Operator,我想检查一个函数是否返回两个枚举值中的任何一个,每个枚举值都是相同的枚举类型 为了简单起见,我尝试创建一个案例,如下所示: case EnumerationTypeExample.TypeA || EnumerationTypeExample.TypeB: 不幸的是,这并不能取悦C#,它说我不能使用“| |”操作符,尽管它们是相同类型的;奇怪的有没有别的办法?if语句可能会起作用,我可能会退一步说,但是,如果可能的话,我更愿意使用switch语句。case语句必须是常量,而不是计算。 但是,在

我想检查一个函数是否返回两个枚举值中的任何一个,每个枚举值都是相同的枚举类型

为了简单起见,我尝试创建一个案例,如下所示:

case EnumerationTypeExample.TypeA || EnumerationTypeExample.TypeB:

不幸的是,这并不能取悦C#,它说我不能使用“| |”操作符,尽管它们是相同类型的;奇怪的有没有别的办法?if语句可能会起作用,我可能会退一步说,但是,如果可能的话,我更愿意使用switch语句。

case语句必须是常量,而不是计算。 但是,在这种情况下,您可以使用
fall-through

switch (something)
{
    case EnumerationTypeExample.TypeA:
    case EnumerationTypeExample.TypeB:
    {
        DoSomething();   
        break;  
    }
}

现在代码将在这两种情况下运行。

case语句必须是常量,而不是计算。 但是,在这种情况下,您可以使用
fall-through

switch (something)
{
    case EnumerationTypeExample.TypeA:
    case EnumerationTypeExample.TypeB:
    {
        DoSomething();   
        break;  
    }
}

现在,代码将在这两种情况下运行。

如果在您的脑海中,您记得或正在与枚举一起使用,那是因为按位OR(单个管道字符,
|
)习惯性地与
[标志]
枚举一起使用,以组合它们所表示的位。正如您所发现的,逻辑OR(两个管道字符,
|
)只能与两个布尔运算符一起使用。如果您记得或正在与枚举一起使用,那是因为按位OR(一个管道字符,
|
)通常与
[标志]一起使用
枚举以组合它们所表示的位。正如您所发现的,逻辑OR(两个管道字符,
|
)只能与两个布尔运算符一起使用。