有没有办法短路三元运行?

时间:2012-04-12 16:51:14

标签: c# ternary-operator

我可以写

if(Model.DecisionReason != null && Model.DecisionReason.Length > 35)
    return Model.DecisionReason.Substring(0, 32) + "...";
else
    return Model.DecisionReason;

并且&&中的if比较会短路,如果Model.DecisionReason为空,则会阻止异常。但是,如果我写

return (Model.DecisionReason != null && Model.DecisionReason.Length > 35) ?
     Model.DecisionReason.Substring(0, 32) + "..." :
     Model.DecisionReason;

没有短路,我遇到了异常。有没有办法让它短路,或者我被强制要么在if检查空值或嵌套三元(不是最可读的)中包装长度比较?

1 个答案:

答案 0 :(得分:7)

您编写的两个代码示例都具有相同的行为。这不是if的短路,而只是&&表达式本身的核心组件。