C# - 条件运算符表达式(连续几个)

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

我看到了这行代码。有人能帮我解密这行代码并将它们分组放入括号中吗?


1
我只想说,像那样的代码非常糟糕,即使没有其他原因,也很难阅读。最好将其分组使用括号,或者更好的方法是使用if语句编写类似于这样的代码。例如:isGeneric = variableA != null ? (variableB != null ? false : true) : true; - Hill
哈哈...呃..我也这么想。我在工作中遇到过这段代码,一定会改成那样的!谢谢兄弟 :D - DriLLFreAK100
1
是的,我明白。在我的工作代码库中,我也看到了一些真正可怕的东西。 - Hill
1个回答

6

这是一个三元运算符嵌套另一个三元运算符:

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
@ahsant 当然,但这并不是代码编写的准确解释 :)。 - David L

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接