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