WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用高级篇二:Aggregate扩展其改进... 阅读

c#扩展方法奇思妙用高级篇二:Aggregate扩展其改进

 2010-09-30 20:51:02 来源:WEB开发网   
核心提示:Enumerable.Aggregate 扩展方法在System.Linq命名空间中,是Enumerable类的第一个方法(按字母顺序排名),c#扩展方法奇思妙用高级篇二:Aggregate扩展其改进,但确是Enumerable里面相对复杂的方法,MSDN对它的说明是:对序列应用累加器函数,通过它可以简化很多聚合运算,

Enumerable.Aggregate 扩展方法在System.Linq命名空间中,是Enumerable类的第一个方法(按字母顺序排名),但确是Enumerable里面相对复杂的方法。

MSDN对它的说明是:对序列应用累加器函数。备注中还有一些说明,大意是这个方法比较复杂,一般情况下用Sum、Max、Min、Average就可以了。

看看下面的代码,有了Sum,谁还会用Aggregate呢!

        public static void Test1()
        {
            int[] nums = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

            int sum1 = nums.Sum();
            int sum2 = nums.Aggregate((i,j)=>i+j);
        }

同是求和,Sum不再需要额外参数,而Aggregate确还要将一个lambda作为参数。因为用起来麻烦,操作太低级,Aggregate渐渐被大多人忽视了...

实际上Aggregate因为“低级”,功能确是很强大的,通过它可以简化很多聚合运算。

首先来看对Aggregate组装字符串的问题:

        public static void Test2()
        {
            string[] words = new string[] { "Able", "was", "I", "ere", "I", "saw", "Elba"};
            string s = words.Aggregate((a, n) => a + " " + n);
            Console.WriteLine(s);
        }

输出结果是:Able was I ere I saw Elba (注:出自《大国崛起》,狄娜最后讲述了拿破仑一句经典)。

1 2 3 4  下一页

Tags:扩展 方法 奇思

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接