缩短C#条件

时间:2014-06-30 11:59:40

标签: c# syntax conditional-statements

鉴于以下条件:

bool roundUp = (useSharps && lowerHalf) || (!useSharps && !lowerHalf);
//which means roundUp will be false if useSharps but !lowerHalf,
//or if !useSharps but lowerHalf

是否有更短的方法来确定roundUp

以下是可能的选项:

          |      useSharps     |     !useSharps     |
          |lowerHalf|!lowerHalf|lowerHalf|!lowerHalf|
          -------------------------------------------
   roundUp|    V    |     X    |    X    |     V    |
  !roundUp|    X    |     V    |    V    |     X    |
          -------------------------------------------

          V = true, X = false

更新
也许我的代码错了。我正在寻找的最终结果是表中的内容。

3 个答案:

答案 0 :(得分:17)

如果您希望变量useSharpslowerHalf相等(两者都是假或两者都是真的),您可以检查是否相等:

var roundUp = useSharps == lowerHalf;

修改

如果我正确地解释了你的表格,你的代码就完全适合它(以及我的答案中的缩短版本)。表格本身可以简化为:

lowerHalf | useSharps | roundUp
--------------------------------
    0     |     0     |    1
    0     |     1     |    0
    1     |     0     |    0
    1     |     1     |    1

答案 1 :(得分:2)

如果您需要一个值true和另一个false,则可以使用:

var roundUp = useSharps == !lowerHalf;

答案 2 :(得分:2)

其他答案更容易,但我只是想指出另一种方式。 您可以使用xor运算符检查2个布尔变量是否具有不同的值。

useSharps ^ lowerHalf

如果返回true,则它们具有不同的值,如果为false,则它们具有相同的值。