Je viens d'avoir une idée du dernier nigth lors de l'écriture d'une expression if Et parfois, l'expression a tendance à être longue quand vous l'avez comme ceci:
if(x in (1,2,33,4,-5,61)) { ... }
6 Réponses :
Essayez le suivant
if ( (new []{1,2,33,4,-5,61}).Any(i => x == i) ) { ... }
Avec une inférence de type, vous pouvez même sauter le int code> (je pense).
@Svish, n'a pas réalisé que c'était possible mais vérifié cela fonctionne avec Beta2 2010. Réponse mise à jour
J'utiliserais nouveau [] {1,2,33,4, -5,61}). Contient (x) code>, contient est généralement utilisé pour déterminer si une séquence contient un élément et donc plus explicite En exprimant l'intention, tout () est plus générique, même vous pouvez le faire agir comme contient en utilisant un simple contrôle d'égalité
Je pense que la voie de la méthode de l'extension est une meilleure conception. Dans votre solution, vous avez duplicant la logique de la fonction dans chaque fois que vous l'utilisez. Avec la méthode d'extension, l'algorithme est centralisé et peut être changé globalement si nécessaire - plus il a également l'air plus propre au point d'utilisation.
C'est assez moche. L'approche de la méthode d'extension est beaucoup plus claire et plus facile à lire.
string[] possible = new string[3] { 1, 2, 3); if (possible.Contains(x)) { ...
Je pense que tu voulais et ne pas la corde là-bas.
Je pense que la question était destinée à tous les types.
bool In<T>(T num, params int args) { return (new List<T>(args)).Contains(num); }
Pourquoi avoir une méthode générique qui ne prend qu'une liste d'INTS? Pensez à utiliser les params t [] args - que vous pouvez ensuite appeler .Contient directement.
public static bool In<T>(this T X, params T[] list) { foreach (var item in list) { if (X.Equals(item)) return true; } return false; }
Que diriez-vous de return list.Contains (x); code>?
tableau n'a pas de méthode
Implexes de tableau iEnumerable
étant donné que x est un int, vous pouvez écrire une méthode d'extension, comme:
J'écris habituellement un méthode d'extension comme suit:
if(x.In(1,6,9,11)) { // do something.... }
J'aime celui-ci car il est générique et utilise la méthode contenant plutôt que l'opérateur ==.
Je ne peux pas les pouces assez de ça ... ça se sent tellement plus naturel. J'ai également ajouté une surcharge: Statique publique Bool dans
Je trouve le titre un peu déroutant. On dirait que vous voulez utiliser C # dans une surcharge de l'opérateur. Je mets dans les casquettes pour un manque d'une meilleure idée de la façon de rendre cela plus clair.