■77057 / inTopicNo.10) |
Re[7]: C#6.0 言語仕様 |
□投稿者/ furu (21回)-(2015/09/08(Tue) 11:32:25)
|
■No77039 ((こ) さん) に返信
> https://msdn.microsoft.com/en-us/library/dn986595.aspx
>>int? count = customers?[0]?.Orders?.Count(); // null if customers, the first customer, or Orders is null
> ...
>>The last example demonstrates that the null-condition operators are short-circuiting.
>>If one operation in a chain of conditional member access and index operation returns null,
>> then the rest of the chain’s execution stops.
>
> 止まります。
ショートサーキットなのでしょうが、&&演算子などと全然ちがいますよね。
&&演算子は、「必要な場合のみ、2 番目のオペランドが評価されます。」と書かれていて
残り全部ではありません。
a && b && c //(1)
(a && b) && c //(2)
a ?. b . c //(3)
(a ?. b) . c //(4)
(1)と(2)は同じですが
(3)と(4)は同じではありません。
普通の演算子ではないようないので
言語仕様ではどう辻褄を合わせたのか見てみたいです。
|
|