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

JL.*_*JL. 13 c#

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

澄清(来自评论):

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

Ada*_*ght 28

myBool = !myBool;

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

  • 赋值"a =!a"对于可空的bool来说效果很好.如果a没有值,它会正确地将结果保留为null.在这方面你的原始答案是正确的.(原始评论的其余部分已删除,因为它不再适用) (5认同)
  • 该死的,被"帖子太短"的错误打败了. (4认同)
  • @ Scott,@ Andrew - 你可能想要启动Snippet Compiler或VS并给它一个测试.编译并运行得很好:`bool?a = null; a =!a; Console.WriteLine(a);` (2认同)

All*_*ice 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);
Run Code Online (Sandbox Code Playgroud)

这是真值表,我知道,这很无聊但我想知道SO如何处理"表"

   value     !value  
|---------|-----------|
|  null   |   null    |
|---------|-----------|
|  false  |   true    |
|---------|-----------|
|  true   |   false   |
|---------|-----------|
Run Code Online (Sandbox Code Playgroud)