J'ai une ligne de code qui ressemble à ceci: est-il possible d'écrire quelque chose de plus élégant que cela? Quelque chose comme: p> Je sais que mon exemple n'est pas possible, mais y a-t-il un moyen de faire ce look "Nettoyant"? P> P>
7 Réponses :
Pourquoi ne faites-vous pas cela?
obj is IComparable
cmon, si (vrai) retourne vrai; sinon retourne faux; code> - ishy.
Ou simplement: Bool Isrequestytype (Obj Obj) {retour obj est octet || obj est int || Obj est long || Obj est décimal || obj est double || Obj flotte; }
Obj est icomparable permettrait également de la chaîne ... probablement pas ce qu'il veut.
@arkain, c'est ce que j'ai fait dans ma réponse.
@ Jinguy, n'avait pas encore fait défiler cela, quand j'ai écrit, je vous ai suscité.
Je le lancerais dans une méthode pour le simplifier un peu:
Tu m'as battus à ça. Vous upvotez.
qui me semble bien - gentil et clair. p>
Seulement: ou utilisez obj.gettype (). gettypecode () code>. p> p> p>
Vous pouvez écrire une méthode d'extension sur l'objet pour vous donner la syntaxe comme: quelque chose comme ceci (utilisez plusieurs versions pour moins d'arguments génériques ou plus génériques: p> public static bool Is<T1, T2, T3>(this object o)
{
return o is T1 || o is T2 || o is T3;
}
Je nommerais la méthode isoneof, mais c'est une syntaxe très concise en effet.
Dommage que vous ne puissiez pas utiliser quelque chose comme des paramètres des paramètres génériques
@Matthew, je me demande si on pourrait définir interface ituple code>, puis la sous-classement avec une variété de classes génériques tuples (
tuple
tuple
est
Créer une fonction d'assistance pour mettre votre test dans.
quelque chose comme p>
public static bool IsOneOf(object o, params Type[] types) { foreach(Type t in types) { if(o.GetType() == t) return true; } return false; } long l = 10; double d = 10; string s = "blah"; Console.WriteLine(IsOneOf(l, typeof(long), typeof(double))); // true Console.WriteLine(IsOneOf(d, typeof(long), typeof(double))); // true Console.WriteLine(IsOneOf(s, typeof(long), typeof(double))); // false
Je souhaite que votre syntaxe soit disponible. :-(
Tout ce piratage juste pour obtenir quelque chose à agir comme inumérique
Ce n'est pas nécessairement juste pour les types numériques, j'ai besoin de comparer également contre des types personnalisés.