Blu*_*eft 4 c# null-conditional-operator safe-navigation-operator
我很困惑null条件运算符如何与普通属性访问级联.拿这两个例子:
a?.b.c
(a?.b).c
Run Code Online (Sandbox Code Playgroud)
我希望它们是等价的:首先,a?.b评估值,然后result.c进行评估.因此,如果a == null应该抛出异常.
但是,这只发生在第二个表达式中.第一个表达式求值为null,意思是它相同a?.b?.c.为什么?
这只是运营商优先权的问题.让我们来看看案例:
一个?.BC
a=> null,在空条件运算符短路的情况下,不评估任何其他内容.(一?.B).C
a=>null((B)null).c=> NullReferenceException被抛出对于这些相同的情况,您应该进行比较
a?.b.c(a?.b)?.ca?.b?.c (正如你已经提到的那样)| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |