Si la syntaxe concise est très important pour vous, vous pouvez définir une méthode d'extension:
public static class ObjectExtensions
{
public static bool In<T>(this T item, params T[] elements)
{
return elements.Contains(item);
}
}
Vous pouvez ensuite utiliser cela comme si:
if (variable.In(thing1, thing2, thing3))
Cela dit, si la liste vérifiée ne changera pas, je préférerais le déclarer comme un champ en lecture seule statique, et appeler Contains
par rapport à cela. La méthode d'extension ci-dessus peut entraîner l'attribution d'un nouveau tableau chaque fois qu'il est appelé, ce qui peut nuire aux performances dans les boucles serrées.
private static readonly Thing[] _things = new [] { thing1, thing2, thing3 };
public void ProcessThing(Thing variable)
{
if (_things.Contains(variable))
{
// ...
}
}
En outre, si la liste en cours de vérification contre contient plus de quelques articles, utilisez un HashSet<T>
à la place.
Les deux syntaxes existent mais font des choses complètement différentes. –
Ne sacrifiez pas la clarté pour la brièveté. Cela dit, il y a déjà de bonnes réponses ci-dessous. Assurez-vous simplement qu'il est plus facile de lire pour le prochain gars/gal, pas plus difficile. – pcdev