空传播算子和foreach

Uwe*_*eim 16 c# null c#-6.0 null-propagation-operator

阅读了很多关于Null传播算子的内容?.,我没有回答它是否有助于以下场景.

抛出的代码:

int[] values = null;

foreach ( var i in values ) // Throws since values is null.
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

为了使其工作,我必须null在访问values变量之前添加一个检查.

很可能上述代码超出了Null传播运算符的设计考虑范围.不过,可以肯定的是,我不得不问.

我的问题:

尝试nullforeach循环中访问集合时,Null传播运算符是否有用?

Uwe*_*eim 10

我找到了另一种工作方式:

当使用Jon Skeet(等人)出色的MoreLinq扩展时,我可以在我的初始示例中使用ForEach扩展方法,例如:

int[] values = null;

values?.ForEach(i=> /*...*/); // Does not throw, even values is null.
Run Code Online (Sandbox Code Playgroud)


Sel*_*enç 8

不它不是.它旨在以安全的方式允许对象的访问成员.在这种情况下,您必须检查数组是否为null.