我对下面的代码感到困惑
bool i_am = true;
int he_is= 0;
if ((!i_am? false : he_is> 0))
Console.WriteLine("Condition is true.....");
我测试了所有可能的方法,通过测试它与i_am和he_is的不同可能性,但仍然无法找到逻辑。
尝试删除一组大括号“()”并产生不同的输出。大括号也令人困惑!为什么是这样?
我是C#的初学者,有人可以帮我解决这个条件声明中的代码流。先感谢您。
如果我们一块一块地分析它:
!i_am ? false : he_is > 0
等于输入:
if (!i_am) //The ! operator means "NOT", so its like saying if(i_am = false), while the default if(i_am) would be equal to if(i_am = true)
{
return false;
}
else
{
return he_is > 0; //he_is = 0, so 0 > 0 will return false.
}
if条件以奇怪的形式表达,但我认为它等于:
if (i_am && he_is > 0)
我不太确定哪个部分让你困惑,所以我会假设一点点。
“??”操作被称为Null Coalescing Operator。如果操作数不为null,则返回左侧操作数;否则它返回右手操作数。
这清楚了吗?