null коалесценция грубо приближается к return x, unless it is null, in which case return y
Мне часто нужно return null if x is null, otherwise return x.y
Я могу использовать return x == null ? null : x.y;
Неплохо, но что null
в середине меня всегда беспокоит - кажется лишним. Я бы предпочел что-то вроде return x :: x.y;
, где то, что следует за ::
, оценивается только в том случае, если предшествующий ему не является null
.
Я рассматриваю это как почти противоположное нулевой коалесценции, смешанное с кратким встроенным нулевым проверкой, но я [почти] уверен, что в С# такого оператора нет.
Существуют ли другие языки, имеющие такой оператор? Если да, то что называется?
(Я знаю, что могу написать метод для него в С#, я использую return NullOrValue.of(x, () => x.y);
, но если у вас есть что-то лучше, я тоже хотел бы это увидеть.)