Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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#_If Statement_Nullable - Fatal编程技术网

C#??算子差

C#??算子差,c#,if-statement,nullable,C#,If Statement,Nullable,“?”之间有区别吗??if语句中的“==true”和“==true” bool? b = Jsonfile.GetBoolean("testval"); if (b ?? true) { } if (b == true) { } 对 如果b为空: b==true将返回false b??true将为true 由于?是空合并运算符,因此它仅在左侧值为null时有效。在这种情况下,这确实很重要 正如对你的问题的评论: b??false与b==true 这是正确的,因为b.GetValueOrDe

“?”之间有区别吗??if语句中的“==true”和“==true”

bool? b = Jsonfile.GetBoolean("testval");
if (b ?? true) { }
if (b == true) { }

如果
b
为空:

  • b==true
    将返回false
  • b??true
    将为true
由于
是空合并运算符,因此它仅在左侧值为
null
时有效。在这种情况下,这确实很重要

正如对你的问题的评论:

b??false
b==true

这是正确的,因为
b.GetValueOrDefault()
返回
false
,这实际上与
相同??在这种情况下为false
。如果
b==null
b.GetValueOrDefault()==true
将产生
false
,是,存在

b??当
b
null
true

b==true
b
不是
null
并且是
true

差异在表的第一行(当
b
null
时)

:

??
运算符返回左侧操作数(如果它不是
null
),否则返回右侧操作数


试试看。您只有三个值要测试。“运算符被称为空合并运算符。如果操作数不为空,它将返回左侧操作数;否则它将返回右侧操作数。”从@DirkVollmar开始,可能是因为缺少尝试?@DirkVollmar,它显示出缺少努力。您可以编写代码,在几秒钟内测试这6种可能性。如果它不合法,你会关闭它。实际上
b??false
b==true
相同。但是
b??当
b
实际上不是
null
时,false
b==false
是不同的。这只是空的情况。是的,我想我会指出,以防有人从你说的话中得到错误的想法。我会删除它,因为它不会增加太多。不过我把你的评论放进去了,这是一个很好的讽刺。
b      b ?? true  b == true
====   ========== ==========
null   true       false
true   true       true
false  false      false