use*_*438 46 c# variables contains
是否有更短的方式写这样的东西:
if(x==1 || x==2 || x==3) // do something
Run Code Online (Sandbox Code Playgroud)
我正在寻找的是这样的:
if(x.in((1,2,3)) // do something
Run Code Online (Sandbox Code Playgroud)
Ily*_*nov 56
您可以使用List.Contains方法实现此目的:
if(new []{1, 2, 3}.Contains(x))
{
//x is either 1 or 2 or 3
}
Run Code Online (Sandbox Code Playgroud)
Aus*_*nen 31
public static bool In<T>(this T x, params T[] set)
{
return set.Contains(x);
}
...
if (x.In(1, 2, 3))
{ ... }
Run Code Online (Sandbox Code Playgroud)
必读: MSDN扩展方法
It'*_*ie. 11
如果它在IEnumerable<T>,请使用:
if (enumerable.Any(n => n == value)) //whatever
Run Code Online (Sandbox Code Playgroud)
另外,这是一个简短的扩展方法:
public static bool In<T>(this T value, params T[] input)
{
return input.Any(n => object.Equals(n, value));
}
Run Code Online (Sandbox Code Playgroud)
把它放在一个static class,你可以像这样使用它:
if (x.In(1,2,3)) //whatever
Run Code Online (Sandbox Code Playgroud)