如何检查至少一个枚举值是否等于if条件中的变量

Nil*_*era 3 c# enums

检查if条件中多个变量的相等性的常用方法如下.

public enum Values
{
    Value1,
    Value2,
    Value3
}
void MethodName (Values randomValue )
{
 if (randomValue == Values.Value1|| randomValue == Values.Value2)
  {
       // code here
  }
}
Run Code Online (Sandbox Code Playgroud)

而不是有一个OR条件,有没有更好的方法来做到这一点?

Rob*_*Rob 8

一些选择:

  1. 您可以将枚举定义为标志.这意味着每个值必须是2的幂(1,2,4,8等).然后,你可以写:

if (randomValue & (Values.Value1 | Values.Value2) > 0)
{
     //...
}
Run Code Online (Sandbox Code Playgroud)
  1. 你可以使用开关

switch (randomValue)
{
    case Values.Value1:
    case Values.Value2:
    {
        //Do something
        break;
    }
    case Values.Value3:
        //Do something else
        break;
    default:
        break;
}
Run Code Online (Sandbox Code Playgroud)
  1. 您可以使用数组(如果您有要搜索的预定义值集,则更好).

if (new[] { Values.Value1, Values.Value2 }.Contains(randomValue))
{
}
Run Code Online (Sandbox Code Playgroud)

要么

static(?) readonly Values[] allowedValues = new[] { Values.Value1, Values.Value2 };

void MethodName(Values randomValue)
{
    if (allowedValues.Contains(randomValue))
    {
        //...
    }
}
Run Code Online (Sandbox Code Playgroud)