null coalescing si traduce approssimativamente in return x, unless it is null, in which case return y
Ho spesso bisogno return null if x is null, otherwise return x.y
posso usare return x == null ? null : x.y;
Non male, ma quello null
nel mezzo mi dà sempre fastidio - sembra superfluo. Preferirei qualcosa di simile return x :: x.y;
, dove ciò che segue ::
viene valutato solo se ciò che lo precede non lo è null
.
Lo vedo quasi l'opposto della coalescenza nulla, un po 'mescolato con un controllo null inline conciso, ma sono [ quasi ] certo che non esiste un tale operatore in C #.
Esistono altre lingue che hanno un tale operatore? se è così, come è chiamato?
(So che posso scrivere un metodo per questo in C #; lo uso return NullOrValue.of(x, () => x.y);
, ma se hai qualcosa di meglio, mi piacerebbe vedere anche quello.)