如果条件具有三元运算符和大于(>)符号

时间:2016-09-19 14:44:58

标签: c# asp.net if-statement conditional

我对下面的代码感到困惑

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#的初学者,有人可以帮我解决这个条件声明中的代码流程。 先谢谢你。

3 个答案:

答案 0 :(得分:3)

if条件以奇怪的形式表达,但我认为它等于:

if (i_am && he_is > 0)

答案 1 :(得分:1)

如果我们一块一块地分析它:

!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.
}

答案 2 :(得分:-1)

我不太清楚哪一部分让你困惑,所以我会假设一点点。

“??”操作被称为Null Coalescing Operator。如果操作数不为null,则返回左侧操作数;否则它会返回右手操作数。

这清楚了吗?

相关问题