空合并大致转换为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
。
我认为这与空合并几乎相反,有点混合了简洁的内联空检查,但我 [几乎] 确定 C# 中没有这样的运算符。
有没有其他语言有这样的运算符?如果是这样,它叫什么?
(我知道我可以在 C# 中为它编写一个方法;我使用return NullOrValue.of(x, () => x.y);
,但如果你有更好的方法,我也想看看。)