【问题标题】:c# - conditional operator expression (a few in a row)c# - 条件运算符表达式(连续几个)
【发布时间】:2016-09-21 02:34:01
【问题描述】:
bool isGeneric = variableA != null ? variableB != null ? false : true : true;

我遇到了这条线。任何人都可以为我破译这条线/将它们分组到括号中吗?

【问题讨论】:

  • 我只是想扔掉那种很糟糕的代码,如果没有其他原因就是难以阅读。用括号将它分组会好得多,或者用 if 语句写出这样的东西会更好。例如isGeneric = variableA != null ? (variableB != null ? false : true) : true;
  • 哈哈...嗯..我想是的..我在工作场所遇到了这个代码..肯定会改变它!谢谢兄弟:D
  • 是的,我想。我在工作的代码库中也看到了一些真正可怕的东西

标签: c# logic conditional-operator


【解决方案1】:

是三元中的三元:

bool isGeneric = variableA != null 
    ? (variableB != null ? false : true) 
    : (true);

如果variableA 不等于null,则检查第一个条件,否则返回true。第一个条件,如果variableB不为null则返回false,如果是则返回true

你也可以把它翻译成下面的 if/else 语句:

bool isGeneric = false;
if (variableA != null) 
{
    if (variableB != null)
        isGeneric = false;
    else 
        isGeneric = true;
}
else
    isGeneric = true;

【讨论】:

  • 我的枪在哪里我想杀人。那应该是“ bool isGeneric = (variableA == null || variableB == null) ”
  • @ahsant 自然而然,但这不是对所写代码的准确解释:)。
猜你喜欢
  • 1970-01-01
  • 2019-02-10
  • 2020-03-30
  • 1970-01-01
  • 2020-11-25
  • 2014-10-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多