关于 C# 中的 IEnumerable<T>.Aggregate。

21

我对 IList<T>.Aggregate() 进行了一些测试,但回答对我来说没有意义。

List<int> Data1 = new List<int> { 1,0,0,0,0};

var result = Data1.Aggregate<int>((total, next) => total + total);

结果是 16

我预期应该是 32

有人能解释一下吗?


嗯...你为什么认为它应该是30呢? - SLaks
变量result的值为Data1.Aggregate(0, (total, next) => total + total);。这次答案是0,我猜测这是因为累加器(total)的初始值为0,并在回调函数中传递了total = 0。 - retide
你是正确的。那将完全忽略列表中的项目。 - SLaks
1个回答

21

Aggregate 不会对列表中的第一个元素运行回调函数。相反,第一个元素被用作累加器(total)的初始值。
因此,您的回调函数只会运行四次,而不是五次,并且24 = 16。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接