首页 > 解决方案 > 如何根据布尔值反转三元条件表达式?

问题描述

我正在寻找一种基于布尔参数反转条件表达式的方法。当然,这可以通过以下方式完成:

public int do(bool b)
{  
    if (b)
       return this.a ? 1 : 0;
    else 
       return this.a ? 0 : 1;
}

但是,将整个函数变成单行函数会很有帮助。所以,就逻辑表达式而言,我正在寻找一个操作 ∘ 来组合a并且b以一种方式

a ∘ b = a

∘ (¬b) = ¬a

问题:有这样的逻辑运算(或运算组合)吗?

标签: c#logical-operators

解决方案


看起来我们想要 xnor:

return (!(a ^ b)) ? 1 : 0;

(但我们没有 xnor 运算符,所以我将 xor 与 not 结合使用)

或者通过交换结果子表达式来简化:

return (a ^ b) ? 0 : 1;

推荐阅读