Я часто использую нулевой оператор распространения в моем коде, потому что он дает мне более читаемый код, особенно в длинных запросах. Мне не нужно проверять каждый отдельный класс, который используется.
Следующий код генерирует ошибку компиляции, в которой мы не можем использовать оператор, распространяющий нуль, в lambda.
var cnt = humans.AsQueryable().Count(a => a.House?[0].Price == 5000);
Ошибка:
Ошибка CS8072 Дерево выражений lambda не может содержать нулевой оператор распространения.
С# Может легко перевести код выше кода на следующий код, если он действительно ничего не может сделать!
var cnt = humans.AsQueryable().Count(a => a.House != null && a.House[0].Price == 5000);
Мне интересно, почему С# ничего не делает и просто бросает ошибку компилятора?