Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#,反转可空布尔值的快速方法?_C# - Fatal编程技术网

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

C#,反转可空布尔值的快速方法?,c#,C#,我有一个可为空的布尔值。什么是一种快速反转的方法。换句话说,如果值为TRUE,则将其设为FALSE,否则将其设为TRUE 澄清(从评论中): 预期的行为是:如果可为null的bool有一个值,则反转,否则应返回null。myBool=!米布尔 编辑:好的,基于对问题的精确理解(即,myBool如果为空则表示为空),以上是最简单的答案。Edit,drblaise是对的,工作正常 bool? a = null; bool? b = false; bool? c = true; a = !a; b

我有一个可为空的布尔值。什么是一种快速反转的方法。换句话说,如果值为TRUE,则将其设为FALSE,否则将其设为TRUE

澄清(从评论中):


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

myBool=!米布尔


编辑:好的,基于对问题的精确理解(即,
myBool
如果为空则表示为空),以上是最简单的答案。Edit,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);
这是真相表,我知道,这很无聊,但我想看看如何处理“表”


x=!(x??false)

你认为NULL的倒数是什么?@艾伦,我的预期行为是,如果空的布尔值有一个值,那么反转,否则应该返回null……myBool将为您提供您想要的行为。@JL:您应该将该评论移至问题。迟做总比不做强。你可以帮他做。Henk:)@JL:只要值不为null,它就可以在可为null的布尔值上工作。在这种情况下,您需要首先测试myBool.HasValue。如果为null,则返回null,而不是true,不确定是否需要。我已经对答案进行了微调,以处理可为null的类型。现在还不清楚
null
的倒数是什么,所以我把它留给了你(也就是说,我不完全相信null的倒数是真的:)赋值
a=!一个
对于可为空的bool很好。如果a没有值,它会正确地将结果保留为null。你最初的回答在这方面是正确的。(原始注释的其余部分被删除,因为它不再适用)@Scott,@Andrew——您可能需要启动代码段编译器或VS并对其进行测试。这可以很好地编译和工作:
bool?a=零;a=!A.控制台写入线(a)+1,类似地,您可以有一个^=true,但这可能太模糊了
   value     !value  
|---------|-----------|
|  null   |   null    |
|---------|-----------|
|  false  |   true    |
|---------|-----------|
|  true   |   false   |
|---------|-----------|