在多个值上使用布尔运算符的快捷方式

Sta*_*tar 2 c#

首先,如果标题不清晰或具有描述性,请对不起; 我不知道该写些什么.

我想知道是否有更好的方法来执行此操作:

bool result = variable1.innerValue.level2.innerValue == 1 || 
              variable1.innerValue.level2.innerValue == 2 || 
              variable1.innerValue.level2.innerValue == 3;
Run Code Online (Sandbox Code Playgroud)

我们写不出类似的东西:

bool result = variable1.innerValue.level2.innerValue == (1 || 2 || 3);
Run Code Online (Sandbox Code Playgroud)

这将产生语法错误.

有任何想法吗?

Tim*_*ter 8

您可以将集合用作占位符,并且Enumerable.Contains:

if(new[]{1, 2, 3}.Contains(variable1.innerValue.level2.innerValue))
{

}
Run Code Online (Sandbox Code Playgroud)

或者,为了它的价值,这个扩展:

public static bool In<T>(this T source, params T[] list)
{
  if(null==source) throw new ArgumentNullException("source");
  return list.Contains(source);
}
Run Code Online (Sandbox Code Playgroud)

这使你能够写下这个:

if(variable1.innerValue.level2.innerValue.In(1, 2, 3))
{

}
Run Code Online (Sandbox Code Playgroud)

你最喜欢的C#扩展方法是什么?(codeplex.com/extensionoverflow)