Question simple: -
J'ai les déclarations simples simples suivantes: - P>
if (foo == (Animal.Cat || Animal.Dog)) { .. } if (baa == (1 || 69)) { .. }
7 Réponses :
Vous pouvez utiliser le commutateur ne fonctionnera que pour de tels exemples triviaux, cependant, et je voudrais suggère de coller à code> avec fratthrough (un héritage laid de syntaxe C):
si code> dans ce cas de toute façon. p> p>
Je crée généralement une méthode d'extension appelée Il ressemble à isine () code> qui prend un tableau de paramètres générique de type
.Contains () code> sur celui-ci, passant l'instance sur laquelle l'extension est appelée. P>
si (foo.isin (FOO1, FOO2)) code>. Très simple à écrire, super facile à utiliser. P>
J'aime ça :) Pas sûr si je vais l'utiliser, mais c'est une réponse kewl. à votre santé!
Bien que syntaxiquement bien, je l'éviterais à l'intérieur des boucles serrées et de la haute performance, car params t [] args code> provoque une matrice allouée en tas sur chaque invocation, malheureusement pas cher, malheureusement. Cela pourrait être atténué en ayant des surcharges spécifiques pour un petit nombre d'arguments, comme comment
string.format code> fait.
Ce n'est pas très utile dans ce cas spécifique où vous n'avez que deux options, mais s'il pourrait y avoir de nombreuses options, vous préférez définir les options dans une liste, puis utiliser Cette méthode fonctionnera également sur d'autres types que Notez que si vous créez une nouvelle liste à chaque fois, une pénalité de performance sera une pénalité de performance. P> P> contient code> comme ceci: < Pré> xxx pré>
Enums code> y compris les types que vous ne pouvez pas
commutateur code> sur. Il est également utile si la liste des valeurs autorisées ne sera connue qu'au temps d'exécution. P>
Vous pouvez utiliser une méthode d'extension pour cela:
enum TestEnum { Stackoverflow, overflowStack, stackstack } TestEnum val = TestEnum.overflowStack; Console.WriteLine(val.IsAny(TestEnum.stackstack, TestEnum.Stackoverflow)); //false Console.WriteLine(val.IsAny(TestEnum.overflowStack, TestEnum.Stackoverflow)); // true
Je ne sais pas vraiment beaucoup sur .NET 4.0 (en utilisant 3,5 pour l'instant) mais je pense qu'il n'y a aucun moyen d'obtenir effet pur.krome veux.
mais une approximation de ce type de comparaison peut être obtenue en utilisant Tableaux et méthodes d'extension LINQ fournit. P>
Voici le petit exemple. P>
if (baa.IsOneOf(5, 7, 9, 10)) { Console.WriteLine(@"bingo int"); }
Un moyen de plus de faire est de séparer les règles et la logique qui doit être effectuée lorsque tout / tous sont tristes en: alors, vous pouvez consommer le Règle par le .ny () et / ou tous () pour effectuer les opérations pertinentes comme: p> hth p> p> p>
Je pense qu'une meilleure question est de savoir pourquoi se soucie du tout à ce sujet? Il est clair car il se trouve. Je parie si vous avez posté plus de votre code, il y aurait beaucoup d'autres choses à traiter d'abord. P>
Dupliqué exact: Stackoverflow.com/Questtions/2007003/...