0

可能重复:
空合并运算符是否存在“相反”?(……任何语言?)

这里有没有更简洁的方式来写第三行?

int? i = GetSomeNullableInt();
int? j = GetAnother();
int k = i == null ? i : j;

我知道空合并运算符,但我正在寻找的行为与此相反:

int k == i ?? j;
4

3 回答 3

1

在 C# 中,您拥有的代码是编写您想要的最简洁的方式。

于 2011-09-12T18:51:27.430 回答
1

鬼鬼祟祟 - 你在我回复的时候编辑了它。:)

我不相信有更简洁的写法。但是,我会使用“HasValue”属性,而不是 == null。这样更容易看出你的意图。

int? k = !i.HasValue ? i : j; 

(顺便说一句 - k 也必须可以为空。)

于 2011-09-12T18:54:48.237 回答
1

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();
于 2011-09-12T18:55:00.600 回答