【问题标题】:If condition with a ternary operator and a Greater than(>) symbol带有三元运算符和大于 (>) 符号的 if 条件
【发布时间】:2017-01-27 07:24:56
【问题描述】:

我对下面这段代码感到困惑

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# 的初学者,谁能帮助我了解此条件语句中的代码流程。 提前谢谢你。

【问题讨论】:

  • 你到底有什么不明白的? if 需要 bool。条件运算符? 返回一。如果测试为阳性,则在问号后面的第一个,否则在: 后面的那个。 he_is> 0 返回false。由于两者都是错误的,if 不会执行 Console.WriteLine
  • i_am && he_is > 0
  • @juharr 你成功了!又短又甜!非常感谢!
  • 发布它作为答案,它可能会帮助像我这样的人.. @juharr

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


【解决方案1】:

if条件用一种奇怪的形式表示,但我认为它等于:

if (i_am && he_is > 0)

【讨论】:

    【解决方案2】:

    我不太确定是哪一部分让你感到困惑,所以我会做一些假设。

    “??”操作称为空合并运算符。如果操作数不为空,则返回左侧操作数;否则返回右手操作数。

    这说明什么了吗?

    【讨论】:

    • 这不是真的。 Null 合并运算符是 ??
    • 道歉 - 添加了另一个? - 我猜那是他要找的接线员。
    • 他在他的代码中使用了?: Operator
    • 也被称为“安全导航操作员”——对吧?这里还有英文版link 供其他人使用。
    • No :) Safe Navigation Operator 用于访问成员或调用对象的方法但不知道是否为null?: 运算符称为Conditional Operator
    【解决方案3】:

    如果我们逐条分析:

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

    【讨论】:

      猜你喜欢
      • 2022-12-06
      • 2019-07-21
      • 2021-05-13
      • 2017-08-26
      • 2023-03-31
      • 2016-03-30
      • 1970-01-01
      • 1970-01-01
      • 2016-07-05
      相关资源
      最近更新 更多