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沒錯。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM