我经常在代码中使用null传播运算符,因为它让我的代码更可读,特别是在长查询中,我不必对使用的每个类都进行null判断.
下面的代码抛出一个编译错误,说明我们不能在lambda中使用NULL传播操作符.
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#什么都不做,只是抛出一个编译器错误?