Existe-t-il une manière plus courte d'écrire quelque chose comme ceci:
if(x==1 || x==2 || x==3) // do something
Ce que je recherche, c'est quelque chose comme ceci:
if(x.in((1,2,3)) // do something
Vous pouvez y parvenir en utilisant la méthode 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))
{ ... }
Lecture requise: méthodes d'extension MSDN
Si c'est dans un IEnumerable<T>
, utilisez ceci:
if (enumerable.Any(n => n == value)) //whatever
Sinon, voici une méthode d'extension courte:
public static bool In<T>(this T value, params T[] input)
{
return input.Any(n => object.Equals(n, value));
}
Mettez-le dans un static class
, et vous pouvez l'utiliser comme ceci:
if (x.In(1,2,3)) //whatever
int x = 1;
if((new List<int> {1, 2, 3}).Contains(x))
{
}
Je devine entièrement ici, corrigez le code si je me trompe:
(new int[]{1,2,3}).IndexOf(x)>-1