C#,快速反转可空的布尔?

时间:2010-03-17 13:21:46

标签: c#

我有一个可以自欺欺人的布尔。什么是反转它的快速方法。换句话说,如果value为TRUE,则使其为FALSE,否则使其为TRUE。

澄清(来自评论):

预期的行为是:如果可空的bool有一个值,则反转,否则应返回null。

3 个答案:

答案 0 :(得分:28)

myBool = !myBool;

编辑:好的,基于对问题的精确理解(例如myBool如果为空则表示为null),以上是最简单的答案。

答案 1 :(得分:19)

编辑,drblaise是对的,!工作得很好

bool? a = null;
bool? b = false;
bool? c = true;

a = !a;
b = !b;
c = !c;

Assert.AreEqual(a, null);
Assert.AreEqual(b, true);
Assert.AreEqual(c, false);

这是真相表,我知道,这很无聊但我想知道SO如何处理“表格”

   value     !value  
|---------|-----------|
|  null   |   null    |
|---------|-----------|
|  false  |   true    |
|---------|-----------|
|  true   |   false   |
|---------|-----------|

答案 2 :(得分:2)

x =!(x ?? false)