la fusion nulle se traduit à peu près par return x, unless it is null, in which case return y
J'ai souvent besoin return null if x is null, otherwise return x.y
je peux utiliser return x == null ? null : x.y;
Pas mal, mais cela null
me dérange toujours au milieu - cela semble superflu. Je préférerais quelque chose comme return x :: x.y;
, où ce qui suit ::
est évalué uniquement si ce qui précède ne l'est pas null
.
Je vois cela comme presque l'opposé de la coalescence nulle, en quelque sorte mélangée à un contrôle nul en ligne, mais je suis [ presque ] certain qu'il n'y a pas d'opérateur de ce type en C #.
Y a-t-il d'autres langages qui ont un tel opérateur? Si oui, comment s'appelle-t-il?
(Je sais que je peux écrire une méthode pour cela en C #; j'utilise return NullOrValue.of(x, () => x.y);
, mais si vous avez quelque chose de mieux, j'aimerais voir cela aussi.)