gpt4 book ai didi

c# - 与 decimal 的模式匹配总是因可空的 decimal 累加器而失败

转载 作者:行者123 更新时间:2023-11-30 19:36:07 27 4
gpt4 key购买 nike

是什么导致 sum 始终为 null

object[] data = new object[]
{
2.2M,
3m,
1,
"string",
true,
false,
2.3f
};

decimal? sum = null;
foreach (object x in data)
{
if (x is decimal d)
sum += d;
}

最佳答案

为什么不用专门为此设计的老式 Linq

  object[] data = new object[] {
2.2M,
3m,
1,
"string",
true,
false,
2.3f };

// If you want 2.2m + 3m == 5.2
var sum = data
.OfType<decimal?>() // we want decimal only: 2.2M as well as 3m
.Sum(); // summed up

编辑:如果您想在空过滤集合上获取null(不是0m)(即当集合不存在时)没有任何 decimal 项)我们必须修改聚合:

  var sum = data
.OfType<decimal?>()
.Aggregate((decimal?)null,
(s, a) => s == null ? a : s + a);

关于c# - 与 decimal 的模式匹配总是因可空的 decimal 累加器而失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47902539/

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