为什么这个c#代码会抛出一个空的异常?
bool boolResult = SomeClass?.NullableProperty.ItsOkProperty ?? false;
一旦NullableProperty评估为null,elvis运营商是否应该停止评估(短路)?
根据我的理解,上面的代码行是:
的快捷方式bool boolResult
if(SomeClass != null)
if(SomeClass.NullableProperty != null)
boolResult = SomeClass.NullableProperty.ItsOkProperty;
else
boolResult = false;
else
boolResult = false;
我是否认为错了?
编辑:现在我理解为什么我弄错了,代码行实际上转化为类似的东西:
bool boolResult
if(SomeClass != null)
boolResult = SomeClass.NullableProperty.ItsOkProperty;
else
boolResult = false;
因为NullableProperty为空而抛出......
答案 0 :(得分:9)
你需要链接,因为NRE在第二个引用上:
bool boolResult = SomeClass?.NullableProperty?.ItsOkProperty ?? false;