このようなものを書く短い方法があります:
if(x==1 || x==2 || x==3) // do something
私が探しているのは次のようなものです:
if(x.in((1,2,3)) // do something
List.Contains メソッドを使用してこれを実現できます。
if(new []{1, 2, 3}.Contains(x))
{
//x is either 1 or 2 or 3
}
public static bool In<T>(this T x, params T[] set)
{
return set.Contains(x);
}
...
if (x.In(1, 2, 3))
{ ... }
必要な読み取り: MSDN拡張メソッド
IEnumerable<T>
にある場合は、これを使用します:
if (enumerable.Any(n => n == value)) //whatever
さもなければ、ここに短い拡張メソッドがあります:
public static bool In<T>(this T value, params T[] input)
{
return input.Any(n => object.Equals(n, value));
}
static class
に入れれば、次のように使用できます。
if (x.In(1,2,3)) //whatever
私はここで完全に推測していますが、間違っている場合はコードを修正してください:
(new int[]{1,2,3}).IndexOf(x)>-1