Explicación del algoritmo de trabajo de Aggregate en LINQ (C#)
¡Hola a todos! Empecé a estudiar LINQ en C# y me encontré con el método Aggregate. Leí la documentación, pero aún no entiendo completamente cómo funciona.
En la documentación se dice que Aggregate aplica una función acumuladora a una secuencia. Pero, ¿qué significa esto en la práctica?
Por ejemplo, tengo este código:
```csharp
int[] numbers = { 1, 2, 3, 4, 5 };
int sum = numbers.Aggregate((acc, x) => acc + x);
Console.WriteLine(sum); // 15
```
Entiendo que esto es la suma de los elementos del array. Pero, ¿cómo ocurre exactamente paso a paso? ¿Qué son `acc` y `x` en cada iteración? ¿Por qué el resultado es 15 y no otra cosa?
También probé este ejemplo con strings:
```csharp
string[] words = { "Hello", " ", "World", "!" };
string result = words.Aggregate((current, next) => current + next);
Console.WriteLine(result); // "Hello World!"
```
Aquí tampoco entiendo completamente cómo se concatenan los elementos.
Expliquen, por favor, el algoritmo de trabajo de Aggregate de manera sencilla, idealmente con un desglose paso a paso.