gpt4 book ai didi

c#-6.0 - C# 6 Elvis 运算符(空传播)是否短路

转载 作者:行者123 更新时间:2023-12-01 08:54:29 26 4
gpt4 key购买 nike

为什么这段 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 为空而抛出...

最佳答案

您需要链接,因为 NRE 在第二个引用上:

bool boolResult = SomeClass?.NullableProperty?.ItsOkProperty ?? false;

关于c#-6.0 - C# 6 Elvis 运算符(空传播)是否短路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30765145/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com