Conditional XOR?
There is the logical XOR operator: ^
Documentation: C# Operators and ^ Operator
The documentation explicitly states that ^
, when used with boolean operands, is a boolean operator.
"for the bool operands, the ^ operator computes the same result as the inequality operator !=".
(And as noted in another answer, that's exactly what you want).
You can also bitwise-xor integer operands with ^.
Conditional xor should work like this:
true xor false = true
true xor true = false
false xor true = true
false xor false = false
But this is how the !=
operator actually works with bool types:
(true != false) // true
(true != true) // false
(false != true) // true
(false != false) // false
So as you see, the nonexistent ^^
can be replaced with existing !=
.
In C#, conditional operators only execute their secondary operand if necessary.
Since an XOR must by definition test both values, a conditional version would be silly.
Examples:
Logical AND:
&
- tests both sides every time.Logical OR:
|
- test both sides every time.Conditional AND:
&&
- only tests the 2nd side if the 1st side is true.Conditional OR:
||
- only test the 2nd side if the 1st side is false.