考虑以下代码:
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.
有什么魔力?:)
如果这是因为短路,我从没想过它会这样。