【发布时间】:2017-08-25 20:10:31
【问题描述】:
var a = b?.c.d;
这个表达式不应该总是给出编译错误吗?如果 b 为 null,则传播 null 值,因此 c 也将为 null,因此也需要此运算符。据我了解,在表达式中使用此运算符会像病毒一样传播。
但是 Visual Studio 2015 和 Resharper 都没有对我说什么,我在这里错过了什么吗?
【问题讨论】:
-
为什么会是编译器错误?如果
b为空,则表达式的计算结果为空。如果不是,则表达式返回b.c.d的结果。 -
不,如果
b已经为空,则根本不会评估c,从而使a只是null。 -
我不明白这个问题;如果
b是null,则表达式不会被进一步计算,而是产生null,因此c不会发生任何事情。 -
您希望生成什么编译器错误?
-
你有没有想过
var a = (b?.c).d;?
标签: c# .net null-conditional-operator