理解这个Lambda表达式

时间:2018-05-26 02:39:10

标签: c# lambda

在学习教程时发现这一点,无法理解它,因为源代码没有对它正在做什么做出评论。我向它传递了许多不同的byte []值,看看我是否可以解决它,我不能。大多数Lambda教程只显示一个变量类型 - 而不是2。

using System.Linq;
using System.Numerics;

private string DoLamdaExpression(byte[] data)
{
    var intData = data.Aggregate<byte, BigInteger>(0, (current, t) => current * 256 + t);
    string result = intData.ToString();
    return result;
}

current和t之前没有任何定义,所以说实话,我不知道&#34; byte [] data&#34;正在使用,而不是调用.Aggregate函数。

另外data.Aggregate =累积功能...... 我的直觉是&#34;字节&#34;正在扮演当前和&#34; BigInteger&#34;扮演t的角色。

public static TAccumulate Aggregate<TSource, TAccumulate>(this IEnumerable<TSource> source, TAccumulate seed, Func<TAccumulate, TSource, TAccumulate> func);

1 个答案:

答案 0 :(得分:6)

lambda表达式定义了一个匿名Func,它聚合data字节数组,其中处理数组的每个元素。 current表示到目前为止的结果,t是正在处理的元素。在此示例中,函数迭代数组,并为每个元素将当前结果乘以256并添加正在处理的元素。