jb.*_*jb. 16 c# syntax sum biginteger
我看了一遍,但无法弄清楚这一点.你如何总结BigIntegers的列表?
Using System.Numerics;
Using System.Linq;
List<BigInteger> bigInts = new List<BigInteger>();
BigInteger sum = bigInts.Sum(); // doesn't work
BigInteger sum = bigInts.Sum<BigInteger>(); // doesn't work
BigInteger sum = bigInts.Sum(x => x); // doesn't work
Run Code Online (Sandbox Code Playgroud)
你必须这样做吗?
BigInteger sum = new BigInteger(0);
foreach(BigInteger bigint in bigInts)
sum += bigint;
Run Code Online (Sandbox Code Playgroud)
Sim*_*Var 16
var sum = bigInts.Aggregate(BigInteger.Add);
Run Code Online (Sandbox Code Playgroud)
Aggregate获取一个方法的委托,该方法获取两个BigIntegers并返回一个BigInteger.它使用默认的BigInteger作为初始值(0),并遍历每个BigInteger,使用前一个结果调用BigInteger.Add(0将是第一次的先前结果 - 也称为'seed')和当前元素.
Ale*_*kov 11
聚合函数是Sum的更通用版本:
var bigInts = new List<System.Numerics.BigInteger>();
bigInts.Add(new System.Numerics.BigInteger(1));
var result = bigInts.Aggregate((currentSum, item)=> currentSum + item));
Run Code Online (Sandbox Code Playgroud)