95 votes

XOR conditionnel ?

Comment se fait-il que C# n'ait pas d'opérateur XOR

Exemple:

 true  xor false = true
true  xor true  = false
false xor false = false

310voto

piotrpo Points 3935

La question est un peu dépassée mais...

Voici comment cet opérateur devrait fonctionner :

 true xor false = true
true xor true = false
false xor true = true
false xor false = false

Voici comment l'opérateur != fonctionne avec les types bool :

 (true != false) // true
(true != true) // false
(false != true) // true
(false != false) // false

Ainsi, comme vous le voyez, les ^^ inexistants peuvent être remplacés par les !=

31voto

iceaway Points 420

Il y a l'opérateur XOR logique : ^

Documentation : opérateurs C# et opérateur ^

13voto

Simple Fellow Points 817

Comme demandé par Mark L , voici la version correcte :

  Func<bool, bool, bool> XOR = (X,Y) => ((!X) && Y) || (X && (!Y));

Voici la table de vérité :

  X | Y | Result
 ==============
 0 | 0 | 0
 1 | 0 | 1
 0 | 1 | 1
 1 | 1 | 0

Référence: OU exclusif

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X