【发布时间】:2018-08-16 18:25:44
【问题描述】:
我想添加可为空的int? 并在所有值均为null 时保留null。
我想要这个结果:
1 + 2 = 3
1 + null = 1
null + null = null
O + null = 0
问题是,如果我将一个值与 null 相加,结果是 null
int? i1 = 1;
int? i2 = null;
int? total = i1 + i2; // null
我看过这个帖子: Is there a more elegant way to add nullable ints?
使用 linq:
var nums = new int?[] {null, null, null};
var total = nums.Sum(); // 0
我得到 0,我想要 null...
我发现的唯一方法是制作一个函数:
static int? Sum(params int?[] values)
{
if (values.All(item => !item.HasValue))
return null;
else
return values.Sum();
}
我有办法在本地做到这一点吗?
【问题讨论】:
-
好吧,写一个方法也不错:)
-
为它创建自己的类型和运算符以及 linq 函数。
-
我不明白链接副本中的哪个答案解决了这个问题。这是OP链接到的线程,所以他们已经清楚地阅读了它。有人可以让我摆脱痛苦吗?
-
OP 明确表示他们希望
null + null成为null,而不是0,这就是我感到困惑的原因。谁在乎 OP 的推理是什么,这是他们所要求的。 -
我同意 OP 想要的东西闻起来很糟糕,但我看不出行为上的矛盾。他们说如果所有值都是
null,他们希望总和为null,在任何其他情况下,将null视为0。对我来说似乎很简单。我不明白重复项如何回答场景 OP 卡在null + null = null而不是0上。我是否异常密集?