C# 两个布尔域的异或运算

C# 两个布尔域的异或运算,c#,xor,C#,Xor,给定两个布尔值,如何找到最优雅的一个计算C#中异或运算的线性函数 我知道可以通过组合使用开关或ifelse来实现这一点,但这会使我的代码非常难看。确定添加一些上下文: 你可以看看这里 在这里你可以看到“异或”与“不相等”基本相同。所以你可以用这个(布尔值): 但是,如果你想直接告诉人们你的意思是“XOR”,就用这里的其他答案。C#has^。这是你怎么做的 bool xorValue = bool1 ^ bool2; bool result = x ^ y // x XOR y 我认为这应该有

给定两个布尔值,如何找到最优雅的一个计算C#中异或运算的线性函数

我知道可以通过组合使用
开关
if
else
来实现这一点,但这会使我的代码非常难看。

确定添加一些上下文: 你可以看看这里

在这里你可以看到“异或”与“不相等”基本相同。所以你可以用这个(布尔值):

但是,如果你想直接告诉人们你的意思是“XOR”,就用这里的其他答案。

C#has
^
。这是你怎么做的

bool xorValue = bool1 ^ bool2;
bool result = x ^ y // x XOR y

我认为这应该有帮助:

A ^ B ? TrueOperation() : FalseOperation();

我想没有
^
运算符,因为短路异或是不可能的,因为在所有情况下都必须计算这两个值更优雅一点。。。但我想这是真的在旁观者的眼里,因为在C#中,true=1,false=0。如果你习惯了C/C++和长布尔值,其中有0和非0,那么稍微明智一点或者会在你的头脑中触发警告。但C#的情况并非如此。(请注意,到布尔值的转换仍然是0和非0,但这不是它们的存储方式。)看,我喜欢这个解决方案。我想说这比XOR运算符选项可读性好得多,因为许多开发人员不知道XOR运算符,并且错误地将代码解释为显式,^是位明智的,或者,它只是碰巧作为逻辑值工作,或者因为布尔值的位都是0(=假),或者都是0,只有1位(=真)。
A ^ B ? TrueOperation() : FalseOperation();