8
votes

Méthode d'extension de vérification null

Alors, je fais beaucoup de travail de base de données dans une demande - et il existe plusieurs valeurs de retour possibles de mon système de mise en cache. Il peut renvoyer NULL, il peut renvoyer une valeur par défaut (type) ou peut renvoyer un objet non valide (par objet non valide, je signifie une avec des propriétés / valeurs incorrectes). Je veux créer une méthode d'extension pour faire de ces chèques pour moi, comme: XXX

Le problème est que mon compilateur me dit que si (obj == par défaut (t )) sera toujours faux.

Pourquoi est-ce?


5 commentaires

Est-ce que cela vous donne une erreur de compilateur ou un avertissement. Je n'obtiens ni. Il compile bien.


@GregB. C'est probablement resharper qui lui donne un indice ...


@GregB Oui, j'ai Resharper.


@caesay - Je ne comprends pas le problème. La valeur par défaut pour une référence à une classe est NULL. La valeur par défaut d'une référence à un objet va également être null. On dirait que vous ne comprenez pas le synax de votre propre code.


@Ramhound: Je vais admettre que c'était un malentendu total de ma part.


3 Réponses :


21
votes

Puisque vous avez une contrainte de "catégorie" ( où T: classe ), par défaut (t) est toujours égal à null. Vous avez déjà un chèque pour cela dans l'instruction originale si, le second cas ( obj == par défaut (t) ) ne pourrait jamais être vrai.


0 commentaires

0
votes

La première décision que vous devez faire est: peut t être un type de valeur comme int ?
Si oui, vous pouvez supprimer xxx

et xxx

si t est toujours un type de référence que vous pouvez supprimer < / p> xxx


0 commentaires

1
votes

Je ne sais pas si vous le contraindrez en classe parce que vous voulez ou parce que vous sentez que vous devez avoir à. Si c'est ce dernier, voici un moyen de faire la vérification de la valeur par défaut sur des types complexes et simples: xxx

si votre choix de le contraindre à la classe n'était que intentionnel ou pour une analyse de rentabilisation, n'hésitez pas ignorer cette suggestion. Une autre chose que cela peut ne pas tenir compte est la boxe de types simples (bien que j'utilise habituellement des types simples nullables ces jours-ci, ce que ce code fonctionne pour).


0 commentaires