C#6中空条件运算符的更改

Joh*_*iou 3 c# c#-6.0

我正在阅读C#6.0中引入的更改,我对null运算符有疑问.

在C#6中这个表达式

int? x= y?.length;
Run Code Online (Sandbox Code Playgroud)

将是有效的,如果y是,null并返回一个null.没有NullargumentException将提高.我认为这是对语言的一个很好的补充.它删除了额外的检查和难看的代码.

但是在null条件运算符的情况下,我们可能会有如下代码

int? x= y?.length ?? 0;
Run Code Online (Sandbox Code Playgroud)

如果ynull0返回.如果length是null,会发生什么?它又返回零?

thu*_*eys 5

??如果表达式不是null右侧,则运算符将返回左侧表达式.

结果类型是右侧的任何内容,在您的情况下是a int.

y?.lengthnull如果其中一个y为null,y.length则求值为null.

在这两种情况下,左侧??评估为null,因此0返回??.