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

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

 2010-09-30 20:51:02 来源:WEB开发网   
核心提示: 怎么中间的都一样,两的单词首尾字母大小写发生转换了呢?!仔细看看吧,c#扩展方法奇思妙用高级篇二:Aggregate扩展其改进(3),不是算法有问题,是输入“有问题”,使用Reflector,反编译一下System.Core.dll,搜索一下“Able was

怎么中间的都一样,两的单词首尾字母大小写发生转换了呢?!

仔细看看吧,不是算法有问题,是输入“有问题”。搜索一下“Able was I ere I saw Elba”,这可是很有名的英文句子噢!

Aggregate还可以实现异或(^)操作:

        public static void Test4()
        {
            byte[] data = new byte[] { 0x31, 0x32, 0x33, 0x34, 0x35 };
            byte checkSum = data.Aggregate((a, n) => (byte)(a ^ n));
        }

对经常作串口通信的朋友比较实用。

看来Aggregate也是比较“简单易用”的,深入一步来看看它是怎么实现的吧,使用Reflector,反编译一下System.Core.dll。

以下代码取自反编译结果,为了演示删除了其中的空值判断代码:

Aggregate

        public static TSource Aggregate<TSource>(this IEnumerable<TSource> source, Func<TSource, TSource, TSource> func)
        {
            using (IEnumerator<TSource> enumerator = source.GetEnumerator())
            {
                enumerator.MoveNext();
                TSource current = enumerator.Current;
                while (enumerator.MoveNext())
                    current = func(current, enumerator.Current);
                return current;
            }
        }

上一页  1 2 3 4  下一页

Tags:扩展 方法 奇思

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