4

我可以写

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

并且将短路&&中的比较,防止在为空时出现异常。但是,如果我写ifModel.DecisionReason

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

没有短路,我遇到了异常。有没有办法让它短路,或者我是否被迫将长度比较包装在if检查空或嵌套三元组(不是最易读的)中?

4

1 回答 1

7

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

于 2012-04-12T16:52:36.750 回答