关于条件运算符'?' ,有人可以用简单的if else格式向我解释一下吗?

时间:2015-03-19 10:16:26

标签: c# conditional operator-keyword

关于条件运算符'?' ,有人可以用简单的if else格式向我解释一下吗? AutoFFSuccess,ActSuccess,FUPSuccess是bool值。

char StatusCode = (AutoFFSuccess) ?
                     (ActSuccess) ? 
                     'P' : 'W' : (FUPSuccess) ?
                     (ActSuccess) ?
                     'F' : 'G' : 'E';

4 个答案:

答案 0 :(得分:3)

我通常会这样格式化:

char statusCode = AutoFFSuccess ? ActSuccess ? 'P' : 'W' 
                                : FUPSuccess ? ActSuccess ? 'F' : 'G'
                                             : 'E'

或者:

char statusCode;

if (AutoFFSuccess)
{
    if (ActSuccess)
    {
        statusCode = 'P';
    }
    else
    {
        statusCode = 'W';
    }
}
else
{
    if (FUPSuccess)
    {
        if (ActSuccess)
        {
            statusCode = 'F';
        }
        else
        {
            statusCode = 'G';
        }
    }
    else
    {
        statusCode = 'E';
    }
}

但这真的不太好。

我没有使用以这种方式嵌套的条件表达它,而是使用“堆叠”单条件运算符将每个选项分开。请注意,有些人不喜欢这样,但我觉得它很简单,一旦你习惯了它:

char statusCode = 
       AutoFFSuccess && ActSuccess ? 'P'
     : AutoFFSuccess ? 'W'
     : FUPSuccess && ActSuccess ? 'F'
     : FUPSuccess ? 'G'
     : 'E';

或者更明确:

char statusCode = 
       AutoFFSuccess && ActSuccess ? 'P'
     : AutoFFSuccess && !ActSuccess? 'W'
     : !AutoFFSuccess && FUPSuccess && ActSuccess ? 'F'
     : !AutoFFSuccess && FUPSuccess && !ActSuccess ? 'G'
     : 'E';

(我假设评估之间的条件不会改变,请注意......)

答案 1 :(得分:1)

这样的事情:

char StatusCode;
if (AutoFFSuccess)
{
    if (ActSuccess)
        StatusCode = 'P';
    else
        StatusCode = 'W';
}
else if (FUPSuccess)
{
    if (ActSuccess)
        StatusCode = 'F';
    else
        StatusCode = 'G';
}
else
    StatusCode = 'E';

答案 2 :(得分:1)

if(AutoFFSuccess){
if(ActSuccess)
    statuscode='P';
else
    statuscode='W';
}

else if(FUPSuccess){
if(ActSuccess)
    statuscode='F';
else
    statuscode='G';

}
else  statuscode = 'E';

答案 3 :(得分:0)

在伪代码中:

if AutoFFSuccess is true:
    if ActSuccess is true:
        StatusCode is 'P'
    else:
        StatusCode is 'W'
else:
    if FUPSuccess is true:
        if ActSuccess is true:
            StatusCode is 'F'
        else:
            StatusCode is 'G'
    else:
        StatusCode is 'E'