我正在阅读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)
如果y是null则0返回.如果length是null,会发生什么?它又返回零?
??如果表达式不是null右侧,则运算符将返回左侧表达式.
结果类型是右侧的任何内容,在您的情况下是a int.
y?.lengthnull如果其中一个y为null,y.length则求值为null.
在这两种情况下,左侧??评估为null,因此0返回??.