Cette question a été posée à interview.I besoin d'avoir au total en cours d'exécution (uniquement à l'aide d'agrégat())C# - Total courant à partir de granulats()
du tableau
(ie)
int[] array={10,20,30};
Expected output
10
30
60
quand j'utilise des agrégats (j'ai appliqué une logique pire)
array.Aggregate((a, b) => { Console.WriteLine(a + b); return (a + b); });
1) It prints 30,60
, pour moi il n'y a pas d'utilisation de retour (a + b).
2) Afin d'imprimer 10
, je dois modifier le tableau en ajoutant l'élément zéro (c'est-à-dire {0,10,20,30}).
Y a-t-il un travail soigné qui pourrait l'éteindre?
Quiconque vous a demandé de le faire n'utilise pas de bonnes pratiques de codage pour les opérateurs de séquence. "Aggregate" devrait retourner une valeur scalaire, et c'est tout ce qu'il devrait faire; il ne devrait pas produire d'effet secondaire en cours de route. Si ce que vous voulez produire est "séquence de totaux cumulés cumulés", n'utilisez pas Aggregate; écrire un nouvel opérateur de séquence "Accumuler" et l'utiliser. –