gpt4 book ai didi

c# - 空合并运算符是否有 "opposite"? (……用任何语言?)

转载 作者:IT王子 更新时间:2023-10-29 03:37:45 25 4
gpt4 key购买 nike

null 合并大致转换为返回 x,除非它为 null,在这种情况下返回 y

我经常需要如果x为null则返回null,否则返回x.y

我可以使用 return x == null 吗?空 : x.y;

不错,但是中间的 null 总是困扰着我——它似乎是多余的。我更喜欢像 return x::x.y; 这样的东西,其中 :: 之后的内容只有在它之前的内容不是 null 时才会被评估.

我认为这几乎与空合并相反,有点混合了简洁的内联空检查,但我[几乎]确定C# 中没有这样的运算符。

是否有其他语言有这样的运算符?如果有,它叫什么?

(我知道我可以用 C# 为它写一个方法;我使用 return NullOrValue.of(x, () => x.y);,但是如果你有更好的方法,我也想看看。)

最佳答案

Groovy 中有空安全取消引用运算符 (?.)...我认为这就是您所追求的。

(也称为 safe navigation operator 。)

例如:

homePostcode = person?.homeAddress?.postcode

如果 personperson.homeAddressperson.homeAddress.postcode 为 null,这将返回 null。

(现在是 available in C# 6.0 但在早期版本中不是)

关于c# - 空合并运算符是否有 "opposite"? (……用任何语言?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2929836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com