如何根据布尔值反转三元条件表达式?

Her*_*ner 0 c# logical-operators

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

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

但是,使整个功能成为一个单行是有帮助的.所以,在逻辑表达式而言,我正在寻找一个操作∘结合ab的方式,

a∘b = a

a∘(¬b)=¬a

问题:是否存在这样的逻辑运算(或运算组合)?

Dam*_*ver 5

看起来我们想要xnor:

return (!(a ^ b)) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

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

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

return (a ^ b) ? 0 : 1;
Run Code Online (Sandbox Code Playgroud)

  • 对于会在生产代码中找到此内容的人,我感觉很糟糕. (2认同)

mjw*_*lls 5

我建议的一个简单易懂的实现是:

return (b == this.a) ? 1 : 0;
Run Code Online (Sandbox Code Playgroud)

因为根据您的原始代码,1如果它们相等则您似乎想要返回0.