2011-05-19 17 views
21

Hice algunas pruebas acerca de IList<T>.Aggregate(), pero la respuesta no tiene sentido para mí.C# Acerca de IEnumerable <T> .Agregado

List<int> Data1 = new List<int> { 1,0,0,0,0}; 

var result = Data1.Aggregate<int>((total, next) => total + total); 

El resultado es 16.

Esperaba que fuera 32.

¿Alguien puede explicar?

+0

Um ... ¿Por qué cree que debería ser 30? – SLaks

+4

¿Te refieres a 32? – SLaks

+0

sí, quiero decir 32. – retide

Respuesta

21

Aggregate no ejecuta su devolución de llamada para el primer elemento de la lista. Más bien, el primer elemento se usa como el valor inicial para el acumulador (total).
Por lo tanto, su devolución de llamada sólo se ejecuta cuatro veces, no cinco, y 2 = 16.

Cuestiones relacionadas