Вычислить сумму всех элементов массива в C#
В этом посте мы обсудим, как вычислить сумму всех элементов в целочисленном массиве в C#.
1. Использование Enumerable.Sum() метод
Мы можем использовать встроенный метод числовой агрегации Sum() от System.Linq namespace для вычисления суммы числовых значений в последовательности. Это показано ниже:
2. Использование Array.ForEach() метод
С использованием Array.ForEach() метод, мы можем выполнить операцию сложения для каждого элемента указанного массива. Следующий пример демонстрирует это, находя общую сумму всех элементов массива, используя Array.ForEach() :
3. Использование foreach петля
Мы также можем перебирать элементы массива с помощью оператора foreach и вычислять сумму на лету. Это показано ниже:
4. Использование Enumerable.Aggregate() метод
Наконец, можно использовать Enumerable.Aggregate() метод в System.Linq Пространство имен, которое применяет функцию аккумулятора к каждому элементу последовательности.
В следующем примере кода показано, как использовать Aggregate для выполнения сложения.
Это все о вычислении суммы всех элементов массива в C#.
Оценить этот пост
Средний рейтинг 4.84 /5. Подсчет голосов: 25
Голосов пока нет! Будьте первым, кто оценит этот пост.
Сожалеем, что этот пост не оказался для вас полезным!
Расскажите, как мы можем улучшить этот пост?
Спасибо за чтение.
Пожалуйста, используйте наш онлайн-компилятор размещать код в комментариях, используя C, C++, Java, Python, JavaScript, C#, PHP и многие другие популярные языки программирования.
Как мы? Порекомендуйте нас своим друзьям и помогите нам расти. Удачного кодирования
Статья Как узнать, чему равна сумма элементов массива?
Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
Можно даже ещё не много сократить код и сразу же вывести сумму всех элементов на экран консоли.
Pirnazar
- Сообщения 205
- Реакции 329
Marylin
Mod.Assembler
- 27.11.2019
- #2
Это с какой стороны посмотреть..
например в отладчике, первый код будет наоборот самым компактным,
т.к. любой метод — это сотни строк дополнительного кода (можно даже профайлер запустить и посмотреть, какой из вариантов исполнится быстрее).
Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре Out-of-Order). Правда если код имеет вложенный цикл, то на исполнительном конвейере получается пузырь "Bubble", и процессору приходится ждать. Но в данном случае цикл не вложенный и ваш вариант имеет место быть, правда компилятор превратит последний вариант в самый громоздкий.
How to sum up an array of integers in C#
Is there a better shorter way than iterating over the array?
Better primary means cleaner code but hints on performance improvement are also welcome. (Like already mentioned: splitting large arrays).
It’s not like I was looking for killer performance improvement — I just wondered if this very kind of syntactic sugar wasn’t already available: «There’s String.Join — what the heck about int[]?».
11 Answers 11
Provided that you can use .NET 3.5 (or newer) and LINQ, try
Yes there is. With .NET 3.5:
If you’re not using .NET 3.5 you could do this:
An alternative also it to use the Aggregate() extension method.

It depends on how you define better. If you want the code to look cleaner, you can use .Sum() as mentioned in other answers. If you want the operation to run quickly and you have a large array, you can make it parallel by breaking it into sub sums and then sum the results.
For extremely large arrays it may pay off to perform the calculation using more than one processors/cores of the machine.
One problem with the for loop solutions above is that for the following input array with all positive values, the sum result is negative:
The sum is -2147483648, as the positive result is too big for the int data type and overflows into a negative value.
For the same input array the arr.Sum() suggestions cause an overflow exception to be thrown.
A more robust solution is to use a larger data type, such as a «long» in this case, for the «sum» as follows:
The same improvement works for summation of other integer data types, such as short, and sbyte. For arrays of unsigned integer data types such as uint, ushort and byte, using an unsigned long (ulong) for the sum avoids the overflow exception.
The for loop solution is also many times faster than Linq .Sum()
To run even faster, HPCsharp nuget package implements all of these .Sum() versions as well as SIMD/SSE versions and multi-core parallel ones, for many times faster performance.
C#. Решение задач на одномерные массивы. Совмещение оператора цикла с оператором условия
C#. Решение задач на одномерные массивы. Совмещение оператора цикла с оператором условия
Содержание
- 1. Нахождение суммы положительных элементов массива из n целых чисел
- 1.1. Реализация с помощью цикла for
- 1.2. Реалізация с помощью цикла while
- 1.3. Реализация с помощью цикла do…while
Поиск на других ресурсах:
1. Нахождение суммы положительных элементов массива из n целых чисел
Задан массив A из 10 целых чисел. Найти сумму положительных элементов массива
1.1. Реализация с помощью цикла for
В данном примере пропущен ввод массива A
1.2. Реализация с помощью цикла while
1.3. Реализация с помощью цикла do…while
2. Найти сумму элементов массива, которые размещаются на парных индексах
В данном примере вычисляются суммы элементов массива A , индексы которых есть парными: 0, 2, 4, … Чтобы определить есть ли число (индекс массива) парным, нужно выполнить проверку
Реализация решения данной задачи тремя видами цикла (ввод массива A пропущен).
3. Найти произведение элементов массива, которые больше заданного числа
В примере находится произведение элементов массива A , которые больше числа, которое размещается в переменной number .
Реализация задачи с использованием цикла for :Если размерность массива большая, то результат произведения целесообразно держать в переменной типа double ( float ). Это связано с тем, что результатом произведения могут быть очень большие или очень маленькие числа. При использовании целых типов может возникнуть переполнение.
Фрагмент реализации данной задачи с использованием цикла while
Реализация с помощью цикла do…while
4. Определение наличия (отсутствия) заданного символа в массиве символов (тип char )
Пусть задан массив символов M . Определить, есть ли заданный символ sym в массиве M . В данном примере пропущен этап ввода массива M и символа sym . Реализация алгоритма с использованием цикла for .
5. Определение наличия (отсутствия) заданного числа в массиве чисел. Массив имеет n целых чисел
Задан массив A целых чисел. Определить, есть ли заданное число num в массиве A .
Реализация с использованием цикла while (ввод массива A и переменных n , num пропущен).6. Поиск позиции последнего вхождения элемента k в массиве из n целых чисел
Способ 1 (медленный).
В данном алгоритме результирующая переменная pos определяет позицию последнего вхождения элемента k в массиве из n целых чисел. Если такого символа нет в массиве, то pos = -1. Реализация с помощью цикла do…while
Способ 2 (быстрый).
Если перебирать (пересматривать) индексы массива от конца к началу, то первый элемент равен k будет позицией последнего вхождения. В этом случае реализация алгоритма (цикл do…while ) будет следующей
7. Поиск позиции первого вхождения элемента k в массиве из n целых чисел
Как было показано в предыдущем пункте, эту задачу можно решать разными способами. В нижеследующем коде массив пересматривается от начала к концу. Как только встречается элемент k , происходит запоминание позиции элемента k и выход из цикла.
Реализация задачи с использованием цикла for .