这个布尔if-else语句可以转换为单行表达式吗?

时间:2013-07-20 08:45:09

标签: c# optimization

以下代码是否可以进一步优化(即可以转换为单行表达式),通过一些按位操作还是其他什么?

if(A_BOOL_VARIABLE)
    return (A == B);
else
    return (A != B);

注意:此处A和B不是bool类型。

3 个答案:

答案 0 :(得分:5)

return A_BOOL_VARIABLE == (A == B);

真相表:

A_BOOL_VARIABLE  (A == B)   Result
    T               T         T
    T               F         F
    F               T         F
    F               F         T

与原始if..else相同。

答案 1 :(得分:2)

不是按位,而是一个简单的布尔异或:

return A_BOOL_VARIABLE ^ (A!=B);

我想这是A==B = !(A!=B)

答案 2 :(得分:1)

为了简洁起见,将A_BOOL_VARIABLE重命名为C,真值表是:

C A B   Result

0 0 0   0 \
0 0 1   1 |  == A ^ B  (C=0)
0 1 0   1 |
0 1 1   0 /

1 0 0   1 \
1 0 1   0 |  == ! (A ^ B)    (C=1)
1 1 0   0 |
1 1 1   1 /

所以最后的表达式可能是:A ^ B ^ C其中^是独占的。