Consider two overloads:
static long Sum(int head, params int[] tail) { if (tail == null) throw new ArgumentNullException("tail"); return Sum(new int[] { head }.Concat(tail)); } static long Sum(IEnumerable<int> numbers) { if (numbers == null) throw new ArgumentNullException("numbers"); long result = 0; foreach (var number in numbers) { result += number; } return result; }
Sample Usage:
Console.WriteLine(Sum(5, 1, 4, 10)); //Console.WriteLine(Sum()); // Error: No overload for method 'Sum' takes 0 arguments Console.WriteLine(Sum(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)); int[] array = { 42, 43, 44 }; Console.WriteLine(Sum(array));
source share