Au lieu de
if (foo == "1" || foo == "5" || foo == "9" ... )
J'aime les combiner comme suit (ce qui ne fonctionne pas):
if (foo == ("1" || "5" || "9" ... ))
Est-ce possible?
Au lieu de
if (foo == "1" || foo == "5" || foo == "9" ... )
J'aime les combiner comme suit (ce qui ne fonctionne pas):
if (foo == ("1" || "5" || "9" ... ))
Est-ce possible?
Malheureusement non, votre meilleur pari est de créer une méthode d'extension
public static bool IsOneOf<T>(this T value, params T[] options)
{
return options.Contains(value);
}
et vous pouvez l'utiliser comme ceci:
if (foo.IsOneOf("1", "5", "9"))
{
...
}
Étant générique, il peut être utilisé pour n'importe quel type (int, chaîne, etc.).
Voici encore une autre alternative:
bool x = new[] { "1", "5", "9" }.Any(a => a == "5"); //x == true
bool y = new[] { "1", "5", "9" }.Any(a => a == "8"); //y == false
Il vaut mieux utiliser .Contains(foo)
dans ce cas, car la flexibilité du lambda est plutôt gâchée ici. S'il y avait une expression complexe à faire, Any serait plus utile.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.