C#??算子差
“?”之间有区别吗??if语句中的“==true”和“==true”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
bool? b = Jsonfile.GetBoolean("testval");
if (b ?? true) { }
if (b == true) { }
对
如果b
为空:
将返回falseb==true
将为trueb??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