РАЗБОР Статья

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

B
BKeaton Newbie · 205 сообщений
Подписаться
22,1 тыс.
[ обложка статьи ]
Режим чтения
При решении различных задач, очень часто требуется узнать, чему равна сумма элементов массива или обобщенной коллекции. Обычно, для того чтобы найти сумму элементов массива используют обычный цикл, например:
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());
Вот такое просто и элегантное решение.
Полезно · 1

Комментарии

4
Но, как видно, исходный код получился слишком громоздким,
Это с какой стороны посмотреть..
например в отладчике, первый код будет наоборот самым компактным,
т.к. любой метод - это сотни строк дополнительного кода (можно даже профайлер запустить и посмотреть, какой из вариантов исполнится быстрее).

Другое дело, что на современных процессорах оптимизация уже лишена смысла, и код выполняется задолго до того, как до него дойдёт очередь (беспорядочное исполнение на ядре Out-of-Order). Правда если код имеет вложенный цикл, то на исполнительном конвейере получается пузырь "Bubble", и процессору приходится ждать. Но в данном случае цикл не вложенный и ваш вариант имеет место быть, правда компилятор превратит последний вариант в самый громоздкий.
 
  • Нравится
Реакции: DragonFly и morgot
2
Это ж не праздничный торт, это код. Код не должен быть вылизанным, код должен быть быстрым.
 
например в отладчике, первый код будет наоборот самым компактным,
Вот часто спрашивают, с какого языка надо начинать учить программирование. Типа чем плох питон или шарп.. Вот тем и плох. Кто начинал с Си + Асма, тот понимает, как оно все устроено на низком уровне. Что метод .sum работает не потому что "бог так решил" , а там под капотом кода побольше, чем в простом переборе массива.
 
  • Нравится
Реакции: DragonFly и Marylin
2
Наверное, это самый простой и распространенный способ решения данной задачи. Но, как видно, исходный код получился слишком громоздким, чтобы это исправить воспользуемся расширяющим методом Sum, который можно применить, как к массивам, так и к обобщенным коллекциям, например:
для того чтобы использовать sum() тебе надо использовать System.Linq, а там кода куда больше чем обычной foreach.