#c# #linq #aggregate
#c# #linq #агрегат
Вопрос:
Я провел несколько тестов о IList<T>.Aggregate()
, но ответ не имеет смысла для меня.
List<int> Data1 = new List<int> { 1,0,0,0,0};
var result = Data1.Aggregate<int>((total, next) => total total);
Результатом является 16
.
Я ожидал, что это будет 32
.
Кто-нибудь может объяснить?
Комментарии:
1. Хм … почему ты думаешь, что это должно быть 30?
2. результат переменной = Data1. Aggregate(0, (total, next) => total total); На этот раз ответ равен 0, я предполагаю это, потому что начальное значение для накопителя (total) равно 0, и передайте total = 0 в функции обратного вызова.
3. Вы правы. Это полностью проигнорирует элементы в списке.
Ответ №1:
Aggregate
не выполняет обратный вызов для первого элемента в списке. Скорее, первый элемент используется в качестве начального значения для накопителя ( total
).
Следовательно, ваш обратный вызов выполняется только четыре раза, а не пять, и 24 = 16.