【发布时间】:2013-03-22 21:07:09
【问题描述】:
var discount = (i == 1) ? definition.SecondPetDiscount ?? definition.AdditionalPetDiscount :
(i == 2) ? definition.ThirdPetDiscount ?? definition.AdditionalPetDiscount :
definition.AdditionalPetDiscount;
谁能给我解释一下这段代码sn-p?我知道三元运算符。但上面不是这样的。
正常的三元运算符如下所示:
PaidDate = ( paidDate == null ? DateTime.Now : paidDate);
【问题讨论】:
-
这是多个“条件”和“空合并”运算符的组合。只需添加括号直到有意义:)
-
仅供参考,它被正确称为条件运算符而不是三元运算符
-
也许这会更好地解释它,你同样的例子
DateTime? paidDate = null; var date = paidDate ?? DateTime.Now;你可以把它解释为“如果paidDate不为null,则返回它的值,否则返回DateTime.Now。注意第一个参数需要可以为 Nullable,在本例中为DateTime? -
由于表达式的括号很少,因此必须注意空合并运算符
??的优先级高于条件运算符? :。
标签: c# .net ternary-operator conditional-operator