Avatar ·

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.