考虑以下代码:
IEnumerable<int> xx = null;
var tt = xx?.Where(x => x > 2).Select(x => x.ToString());
它分配null
给tt
。问题是:为什么它可以正常工作?
我想我必须?.
在 Select as ?.Where(...)
return之前使用null
。此外,如果我将第二行分成两行:
IEnumerable<int> xx = null;
var yy = xx?.Where(x => x > 2);
var zz = yy.Select(x => x.ToString());
ArgumentNullException
在第三行会有yy == null
.
有什么魔力?:)
如果这是因为短路,我从没想过它会这样。