Статья Как узнать, чему равна сумма элементов массива?

При решении различных задач, очень часто требуется узнать, чему равна сумма элементов массива или обобщенной коллекции. Обычно, для того чтобы найти сумму элементов массива используют обычный цикл, например:
C#:
int [] numbers = new int [] { 0, 1, 2, 3, 4, 5 };
int sum = 0;
foreach (int value in numbers)
{
sum += value;
}
//Выводим результат
Console.WriteLine("Сумма элементов массива: " + sum);


Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
C#:
int sum = numbers.Sum();
Console.WriteLine("Сумма элементов: " + sum);


Можно даже ещё не много сократить код и сразу же вывести сумму всех элементов на экран консоли.
C#:
Console.WriteLine("Сумма: " + numbers.Sum());
Вот такое просто и элегантное решение.
 
Последнее редактирование:
  • Нравится
Реакции: Marylin

Marylin

Mod.Assembler
Red Team
05.06.2019
325
1 444
BIT
655
Но, как видно, исходный код получился слишком громоздким,
Это с какой стороны посмотреть..
например в отладчике, первый код будет наоборот самым компактным,
т.к. любой метод - это сотни строк дополнительного кода (можно даже профайлер запустить и посмотреть, какой из вариантов исполнится быстрее).

Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре Out-of-Order). Правда если код имеет вложенный цикл, то на исполнительном конвейере получается пузырь "Bubble", и процессору приходится ждать. Но в данном случае цикл не вложенный и ваш вариант имеет место быть, правда компилятор превратит последний вариант в самый громоздкий.
 
  • Нравится
Реакции: DragonFly и morgot

snakey

New member
20.12.2019
3
0
BIT
0
Это ж не праздничный торт, это код. Код не должен быть вылизанным, код должен быть быстрым.
 

morgot

Green Team
25.07.2018
74
35
BIT
2
например в отладчике, первый код будет наоборот самым компактным,
Вот часто спрашивают, с какого языка надо начинать учить программирование. Типа чем плох питон или шарп.. Вот тем и плох. Кто начинал с Си + Асма, тот понимает, как оно все устроено на низком уровне. Что метод .sum работает не потому что "бог так решил" , а там под капотом кода побольше, чем в простом переборе массива.
 
  • Нравится
Реакции: DragonFly и Marylin

MLNK

Mod. Ethical Hacking
Red Team
23.01.2018
560
706
BIT
7
Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
для того чтобы использовать sum() тебе надо использовать System.Linq, а там кода куда больше чем обычной foreach.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!