Как суммировать массив целых чисел в C#
здесь лучше более короткий путь, чем итерация по массиву?
int[] arr = new int[] { 1, 2, 3 };
int sum = 0;
for (int i = 0; i < arr.Length; i++)
{
sum += arr[i];
}
пояснение:
лучше основной означает более чистый код, но подсказки по повышению производительности также приветствуются. (Как уже упоминалось: разбиение больших массивов).
это не похоже на то, что я искал улучшения производительности убийцы - мне просто интересно, если это очень похоже синтаксический сахар еще не было доступно: "есть Строка.Присоединяйтесь - какого черта о int[]?".
8 ответов:
Да есть. С .Net 3.5 с:
int sum = arr.Sum(); Console.WriteLine(sum);
Если вы не используете .NET 3.5, вы можете сделать это:
int sum = 0; Array.ForEach(arr, delegate(int i) { sum += i; }); Console.WriteLine(sum);
Это зависит от того, как вы определите лучше. Если вы хотите, чтобы код выглядел чище, вы можете использовать .Sum () как упоминалось в других ответах. Если вы хотите, чтобы операция выполнялась быстро, и у вас есть большой массив, вы можете сделать его параллельным, разбив его на sub sums, а затем суммировать результаты.
Если вы не предпочитаете LINQ, лучше использовать цикл foreach, чтобы избежать выхода из индекса.
int[] arr = new int[] { 1, 2, 3 }; int sum = 0; foreach (var item in arr) { sum += item; }
использование foreach будет более коротким кодом, но, вероятно, выполните точно такие же шаги во время выполнения после того, как JIT-оптимизация распознает сравнение с длиной в управляющем выражении for-loop.