7
votes

Si la simplification de la déclaration en C #

J'ai une ligne de code qui ressemble à ceci: xxx

est-il possible d'écrire quelque chose de plus élégant que cela? Quelque chose comme: xxx

Je sais que mon exemple n'est pas possible, mais y a-t-il un moyen de faire ce look "Nettoyant"?


3 commentaires

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.


7 Réponses :


3
votes

Pourquoi ne faites-vous pas cela?

obj is IComparable


5 commentaires

cmon, si (vrai) retourne vrai; sinon retourne faux; - 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é.



8
votes

Je le lancerais dans une méthode pour le simplifier un peu: xxx


1 commentaires

Tu m'as battus à ça. Vous upvotez.



1
votes

qui me semble bien - gentil et clair.


0 commentaires

12
votes

Seulement: xxx

ou utilisez obj.gettype (). gettypecode () .


0 commentaires

27
votes

Vous pouvez écrire une méthode d'extension sur l'objet pour vous donner la syntaxe comme: xxx pré>

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;
}


3 commentaires

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 , puis la sous-classement avec une variété de classes génériques tuples ( tuple : ituple , tuple : ituple , etc.). Ensuite, refait la méthode de l'extension sous la forme est où TTUple: ituple .. puis déballer les arguments de type générique à l'intérieur de la méthode .. Cela donnerait des paramètres argument générique Fonctionnalité...



1
votes

Créer une fonction d'assistance pour mettre votre test dans.

quelque chose comme xxx


0 commentaires

1
votes
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

0 commentaires