a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
47 lines
901 B
C#
47 lines
901 B
C#
using System;
|
|
using System.Collections.Generic;
|
|
|
|
static class Enumerable
|
|
{
|
|
|
|
public static int Sum<TSource> (this IEnumerable<TSource> source, Func<TSource, int> selector)
|
|
{
|
|
return Sum<TSource, int> (source, (a, b) => a + selector (b));
|
|
}
|
|
|
|
static TR Sum<TA, TR> (this IEnumerable<TA> source, Func<TR, TA, TR> selector)
|
|
{
|
|
if (source == null)
|
|
throw new ArgumentNullException ("source");
|
|
if (selector == null)
|
|
throw new ArgumentNullException ("selector");
|
|
|
|
TR total = default (TR);
|
|
int counter = 0;
|
|
foreach (var element in source) {
|
|
total = selector (total, element);
|
|
++counter;
|
|
}
|
|
|
|
if (counter == 0)
|
|
throw new InvalidOperationException ();
|
|
|
|
return total;
|
|
}
|
|
|
|
}
|
|
|
|
class Repro
|
|
{
|
|
|
|
public static int Main ()
|
|
{
|
|
var sum = new [] { "1", "2", "3", "4", "5", "6", "7" }.Sum ((s) => int.Parse (s));
|
|
if (sum != 28)
|
|
return 4;
|
|
|
|
Console.WriteLine (sum);
|
|
return 0;
|
|
}
|
|
}
|