Quelle est la meilleure façon de vérifier si seulement A est NULL ou que B est NULL? J'ai essayé de nombreuses façons différentes de trouver quelque chose qui se sent propre, et c'est à quel point il est convolué:
bool CheckForNull(object a, object b) { return a == null && b != null || a != null && b == null; }
3 Réponses :
Qu'en est-il de cela:
return (a == null) != (b == null);
Vous pouvez utiliser l'opérateur XOR
bool CheckForNull(object a, object b) { return (a == null ^ b == null); }
Si vous avez besoin / souhaitez utiliser XOR, vous pouvez utiliser: mais pour que cela fonctionne, Mais dans ce cas, je pense que je le garderais aussi simple que possible. Votre deuxième version n'a pas l'air si mal réellement: p> et il y a une possibilité d'une sortie tôt em>. (Et si de la chance, le compilateur peut même l'optimiser cela à être exécuté en parallèle (pipelining d'instructions)). P> p> true code> doit évaluer à la même "valeur" . P>
Vrai doit évaluer à la même valeur? Watcha signifie? Quand est-ce vrai pas égal à vrai?
@Évorlor selon la langue, tout ce qui n'est pas zéro peut être évalué à vrai (0 est faux, tout le reste est vrai). Donc, si votre gauche «vraie» est 1 et la droite est 2, le XOR ne fonctionnera pas comme prévu.
La question a la balise C #. Pas besoin de me demander quelle langue.