arr.Aggregate(1, (a, b) => a * b)
1 作為初始累加結果 a。b,執行 Lambda (a, b) => a * b,返回值作為**下一次迭代的 a**。int acc = 1; // 種子
foreach (var b in arr) {
acc = acc * b; // a 來自上一次結果
}
return acc;
a **不是**來自「上一個表達式」,而是**上一次 Lambda 調用的返回值**(累加器狀態)。arr.Aggregate((a, b) => a * b),則以第一個元素為初始 a,從第二個元素開始迭代。arr = [2, 3, 4],種子 1:
步驟 1: a=1, b=2 → 1*2=2 (新 a)
步驟 2: a=2, b=3 → 2*3=6 (新 a)
步驟 3: a=6, b=4 → 6*4=24 (最終結果)
結果 = 24 = 1*2*3*4
Aggregate 即函數式編程中的 **fold/reduce**,種子值決定初始狀態,Lambda 定義狀態轉移。