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

问题描述 投票:0回答:3

我对下面的代码感到困惑

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

c# asp.net if-statement conditional
3个回答
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.
}

3
投票

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

if (i_am && he_is > 0)

-1
投票

我不太确定哪个部分让你困惑,所以我会假设一点点。

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

这清楚了吗?

© www.soinside.com 2019 - 2024. All rights reserved.