S>А для Average всё прекрасно ложится — делаете Average<int, long>(t).
мне бы хотелось таки int на входе, long в сумме и double на выходе:
| System.Linq.Enumerable.Average |
| public static double Average(this IEnumerable<int> source) {
if (source == null) throw Error.ArgumentNull("source");
long sum = 0;
long count = 0;
checked {
foreach (int v in source) {
sum += v;
count++;
}
}
if (count > 0) return (double)sum / count;
throw Error.NoElements();
}
|
| |