Explicação do algoritmo de funcionamento do Aggregate em LINQ (C#)
Olá a todos! Comecei a estudar LINQ em C# e me deparei com o método Aggregate. Li a documentação, mas ainda não entendo completamente como ele funciona.
Na documentação diz que o Aggregate aplica uma função acumuladora à sequência. Mas o que isso significa na prática?
Por exemplo, tenho este código:
```csharp
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = numbers.Aggregate((acc, x) => acc + x);
Console.WriteLine(sum); // 15
```
Eu entendo que é a soma dos elementos do array. Mas como exatamente isso acontece passo a passo? O que são `acc` e `x` em cada iteração? Por que o resultado é 15 e não outra coisa?
Também tentei este exemplo com strings:
```csharp
string[] words = { "Hello", " ", "World", "!" };
string result = words.Aggregate((current, next) => current + next);
Console.WriteLine(result); // "Hello World!"
```
Aqui também não entendo completamente como os elementos são concatenados.
Explique, por favor, o algoritmo de funcionamento do Aggregate de forma simples, de preferência com uma análise passo a passo.