0
votes

Mieux moyen d'écrire une déclaration complexe

Imaginez que vous avez INT N et vous devez vous assurer que ce n'est pas égal à certains chiffres.

Je résoudrais cela comme celui-ci: xxx

la solution Je cherche le fait avec Enums, donc: xxx

Il doit y avoir un moyen plus performant ou plus joli d'écrire cela.


1 commentaires

Avec seulement 3 valeurs à comparer, aucune des alternatives proposées ne sera plus performante - et si elles sont plus jolies, c'est une question de goût. Avec un énorme ensemble de valeurs, hashset <> contient () donnera la meilleure performance


4 Réponses :


2
votes

Vous pouvez avoir une liste puis utiliser Syntaxtic Sugar (AKA LINQ)

int n = 5; // or your way of getting value
var list = new List<int>() {9, 11, 17};
if(list.All(x=>x != n))
{
    // Do your stuff here
}


1 commentaires

Pour la performance - si l'ensemble pour valider contre est trop gros. Peut-être que vous pouvez changer la liste.Tous en parallèle.foreach.



1
votes

Utilisez une matrice pour résoudre le problème

int n = 5;
int[] NotAllowed = { 1, 4, 11 };
if (!NotAllowed.Contains(n))
    do something..


1 commentaires

OP demande une manière performante ou plus jolie. Certains pourraient penser que c'est plus jolie, mais ce n'est certainement pas plus performant. Vous ne seriez pas autorisé à commettre ceci dans mon référentiel: p



1
votes

Il serait également agréable d'utiliser le Array.trueforAll Méthode. XXX


0 commentaires

0
votes

Si vous envisagez de réutiliser la logique, ma suggestion créerait une fonction à ce sujet. De plus, cette approche ne vous limitera pas sur le nombre de comparateurs. xxx

puis sur votre programme xxx


0 commentaires