【发布时间】:2011-09-08 10:43:05
【问题描述】:
null 合并运算符是右结合的,表示形式为
第一??第二个??第三个
被评估为
第一?? (第二个??第三个)
基于上述规则,我认为下面的翻译是不正确的。
发件人:
Address contact = user.ContactAddress;
if (contact == null)
{
contact = order.ShippingAddress;
if (contact == null)
{
contact = user.BillingAddress;
}
}
收件人:
Address contact = user.ContactAddress ??
order.ShippingAddress ??
user.BillingAddress;
相反,我认为以下是正确的(如果我错了,请纠正我)
Address contact = (user.ContactAddress ?? order.ShippingAddress) ??
user.BillingAddress;
【问题讨论】:
-
鉴于空合并运算符的正确关联性,我相信如果不使用一对开闭括号
()来确定表达式评估的优先级,您的代码将永远无法成功转换为使用空合并运算符。
标签: c#