小编tsu*_*sul的帖子

为什么我可以在调用链中省略后续的空条件运算符?

考虑以下代码:

IEnumerable<int> xx = null;
var tt = xx?.Where(x => x > 2).Select(x => x.ToString());
Run Code Online (Sandbox Code Playgroud)

它分配nulltt. 问题是:为什么它可以正常工作?

我想我必须?.在 Select as ?.Where(...)returns之前使用null。此外,如果我将第二行分成两行:

IEnumerable<int> xx = null;
var yy = xx?.Where(x => x > 2);
var zz = yy.Select(x => x.ToString());
Run Code Online (Sandbox Code Playgroud)

ArgumentNullException第三行会有yy == null

有什么魔力?:)
如果这是因为短路,我从没想过它会像这样。

c# null-conditional-operator

1
推荐指数
1
解决办法
541
查看次数

标签 统计

c# ×1

null-conditional-operator ×1