可能重复:
空合并运算符是否存在“相反”?(……任何语言?)
这里有没有更简洁的方式来写第三行?
int? i = GetSomeNullableInt();
int? j = GetAnother();
int k = i == null ? i : j;
我知道空合并运算符,但我正在寻找的行为与此相反:
int k == i ?? j;
可能重复:
空合并运算符是否存在“相反”?(……任何语言?)
这里有没有更简洁的方式来写第三行?
int? i = GetSomeNullableInt();
int? j = GetAnother();
int k = i == null ? i : j;
我知道空合并运算符,但我正在寻找的行为与此相反:
int k == i ?? j;
在 C# 中,您拥有的代码是编写您想要的最简洁的方式。
鬼鬼祟祟 - 你在我回复的时候编辑了它。:)
我不相信有更简洁的写法。但是,我会使用“HasValue”属性,而不是 == null。这样更容易看出你的意图。
int? k = !i.HasValue ? i : j;
(顺便说一句 - k 也必须可以为空。)
What is the point of that operator? The use cases are pretty limited. If you're looking for a single-line solution without having to use a temporary variable, it's not needed in the first place.
int k = GetSomeNullableInt() == null ? null : GetAnother();