• C#Lambda表达式Aggregate的用法及内部运行方式的猜想


    var nums = new int[] { 1, 2, 3, 4, 5 };  // 其和为15
                var count = nums.Aggregate((body, next) =>
                {
                    // 注意,nums的元素个数至少一个以上(但如果是有seed的模式,是可以为0个元素的)才能执行Aggregate,但是C#是允许 new int[0];的。
                    // 只输出了4次,且第一次输出是:1#2,最后一次输出是:10#5
                    // 得出  没seed的  Aggregate(...)累加执行次数是 nums.Length-1 次。
                    // 它的执行方式的可能性之一:系统默认先将第一个元素赋值给body(因为body的类型和next是一致的),然后游标下标index值变为1
                    // 步骤X:判断是否存在nums[index],如果存在则将nums[index]赋给next并执行lambda表达式,
                    // 然后将lambda表达式的  返回值  赋值给body(故不需要body+=next),游标下标index+=1 ;
                    // 如此循环上面的步骤X执行直到index下标对应的nums元素不存在为止。
                    Console.WriteLine(body + "#" + next);
                    return body + next;
                });
                Console.WriteLine("最终结果是:" + count);  // 输出15没错。
  • 相关阅读:
    hdu 1527威佐夫博弈
    hdu 1506
    hdu 1878 欧拉回路
    欧拉回路知识
    hdu 2545 并查集 树上战争
    hdu 2594 kmp
    hdu 1867 kmp匹配
    hdu 2844 多重背包二进制优化
    hdu 4006
    1047
  • 原文地址:https://www.cnblogs.com/silentdoer/p/6273852.html
Copyright © 2020-2023  润新知