c#Enumerable集合的Aggregate扩展方法的三个重载
本文记录下Enumerable集合的Aggregate扩展方法的三个重载
- 如下三个重载函数
- 1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;
- 2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;
- 3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;
- 话不多说,代码如下:
- 运行结果如下:
如下三个重载函数
1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;
2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;
3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;
话不多说,代码如下:
public static void TestIEnumerableAggregate(){/** Aggregate两个重载:* 1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;* 2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;* 3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;*///打印Console.WriteLine("该方式测试“Aggregate三个重载:”");//打印Console.WriteLine();//初始化var numbers = new List<int>() { 2, 4, 6, 8, 10 };//打印Console.WriteLine("1.带一个func参数的:从集合的第二项开始,依次往后往第一个值上聚合(不会修改集合第一项,相当于seed是第一项),集合count = n,循环n - 1次,返回聚合结果;");//序号int index = 0, index2 = 0;//聚合var totalResult = numbers.Aggregate((total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();//打印Console.WriteLine("2.带一个seed和一个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,返回聚合结果;");//序号index = 0;//聚合totalResult = numbers.Aggregate(100, (total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();//打印Console.WriteLine("3.带一个seed和两个func参数的:从集合的第一项开始,依次往后往seed上聚合,集合count = n,循环n次,拿到聚合结果后,最后一个func参数对聚合结果进行二次处理,然后返回聚合结果;");//序号index = 0;//聚合totalResult = numbers.Aggregate(50, (total, value) =>{//打印Console.WriteLine($"Aggregate - {++index}:total = {total},value = {value}");//返回return total + value;}, r =>{//打印Console.WriteLine($"AggregateSelector - {++index2}:r = {r}");//返回return r * 2;});//打印Console.WriteLine($"执行完毕,{nameof(totalResult)} = {totalResult}");//打印Console.WriteLine();}
运行结果如下:
c#Enumerable集合的Aggregate扩展方法的三个重载相关推荐
- aardio名字空间库的扩展方法(三)
通过前面的操作,我们实现了只要导入spaceB这个扩展库,就可以使用spaceA这个基库的内容,还可以使用我们自己新扩展出来的功能,目标达成.这里面有几个问题需要解释: 一.我们继承基库,采用的是在扩 ...
- 【怎样写代码】向现有类型“添加”方法 -- 扩展方法(三):为枚举类型创建方法
如果喜欢这里的内容,你能够给我最大的帮助就是转发,告诉你的朋友,鼓励他们一起来学习. If you like the content here, you can give me the greates ...
- Enumerable 下又有新的扩展方法啦,快来一睹为快吧
一:背景 1. 讲故事 前段时间将公司的一个项目从 4.5 升级到了 framework 4.8 ,编码的时候发现 Enumerable 中多了三个扩展方法: Append, Prepend, ToH ...
- distinct返回null报错_C#之集合常用扩展方法与Linq
一.集合的常用扩展方法(lambda的方式) 1.Where() 根据条件选择数据 2.Select() 根据数据条件转换成新的数据类型,类似于DTO转换类 3.Max() 根据条件选择最大值 4.M ...
- .NET中那些所谓的新语法之二:匿名类、匿名方法与扩展方法
开篇:在上一篇中,我们了解了自动属性.隐式类型.自动初始化器等所谓的新语法,这一篇我们继续征程,看看匿名类.匿名方法以及常用的扩展方法.虽然,都是很常见的东西,但是未必我们都明白其中蕴含的奥妙.所以, ...
- Jumony(一)从扩展方法到流畅的程序体验
今天让公司的程序员试用了一下还在开发中的代号为"Jumony"的HTML数据绑定引擎,开发人员的一句评价被我视为最高的褒奖. "感觉这个框架就是,你想到什么就写什么.&q ...
- 【Groovy】Groovy 扩展方法 ( 实例扩展方法配置 | 扩展方法示例 | 编译实例扩展类 | 打包实例扩展类字节码到 jar 包中 | 测试使用 Thread 实例扩展方法 )
文章目录 一.扩展方法示例 二.实例扩展方法配置 三.编译实例扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 实例扩展方法 一.扩展方法示例 为 Thread 扩展 he ...
- 【Groovy】Groovy 扩展方法 ( 静态扩展方法配置 | 扩展方法示例 | 编译静态扩展类 | 打包静态扩展类字节码到 jar 包中 | 测试使用 Thread 静态扩展类 )
文章目录 一.扩展方法示例 二.静态扩展方法配置 三.编译静态扩展类 四.打包静态扩展类字节码到 jar 包中 五.测试使用 Thread 静态扩展类 一.扩展方法示例 为 Thread 扩展 hel ...
- 第八节:语法总结(2)(匿名类、匿名方法、扩展方法)
一. 匿名类 1. 传统的方式给类赋值,需要先建一个实体类→实例化→赋值,步骤很繁琐,在.Net 3.0时代,微软引入匿名类的概念,简化了代码编写,提高了开发效率. 匿名类的声明语法: var o ...
最新文章
- EduCoder 机器学习 决策树
- vue-awesome-swiper 的使用
- 增量值编码器、单圈绝对值编码器、多圈绝对值编码器
- ssl1213-多边形面积【差积,计算几何】
- 服务器生成文件怎么配置路径,npm run build生成的文件如何部署到服务器上
- Angular 学习笔记——拖拽
- 两年前,梦开始的地方.
- 基于IDEA的Spring源码调试
- HMI报表设计与打印,标签、账单、支票、条码数据打印与出版VC++源码解决方案2018!
- kali2020 中文乱码问题
- 企业微信有网页版登录吗?
- 数据归档,冷热数据分离
- R包的安装以及安装失败的解决
- 新闻与Android相关的话题,热门话题 - 换个角度看新闻 #iOS #Android
- 黑苹果 MacOS 10.15 Catalina 安装详细教程带工具资料
- 普陀区科技创新型小巨人企业
- linux中文显示乱码情况解决
- CEP的一个简单理解
- 摩托车闪光控制器专用芯片MST1172
- Navicat Premium的使用
热门文章
- POJ 3047 Fibonacci
- 时间序列分析——知乎话题讨论(收集)
- kafka rebalance故障的处理策略
- 膜拜!终于有人把Django的MVT设计模式解释的清清楚楚了!
- Upsource的安装和与IDEA产品的配置
- html打开浏览器uri,Data URI和MHTML完整解决所有浏览器
- MySql数据库之审计(开启log+设置init-connect实现无插件审计)
- 微信小程序 渲染层网络错误_详解微信小程序「渲染层网络层错误」的解决方法...
- 一步刷出个后台。Vue3+Ts+element-admin-Vite+Pinia
- 微型计算机发展的心得感想,-微机-心得体会.doc