我经常在我的代码中使用空传播操作符,因为它给了我更多的可读代码,特别是在长查询中,我不必对每个使用的类都进行空检查。 下面的代码抛出一个编译错误,我们不能在lambda中使用null传播运算符。 var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000); 错误 : 错误CS8072expression式树lambda可能不包含空传播运算符。 C#可以很容易地将上面的代码翻译成下面的代码,如果真的不能做任何事情! var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000); 我很好奇,为什么C#什么都不做,只是抛出一个编译器错误?