Карточка Senior Дженерики обновлено

Обобщённая математика .NET 7

Вопрос

Как написать метод Sum<T>, который работает для int, double и decimal?

Попробуйте сами

Ответьте про себя или вслух, потом откройте ответ и сверьтесь.

Показать ответ и разбор

Коротко

С .NET 7 и C 11 есть статические абстрактные члены интерфейсов и интерфейсы чисел:

Ответ

С .NET 7 и C# 11 есть статические абстрактные члены интерфейсов и интерфейсы чисел:

static T Sum<T>(IEnumerable<T> xs) where T : INumber<T>
{
    T s = T.Zero;
    foreach (var x in xs) s += x;
    return s;
}

Разбор

Раньше приходилось писать перегрузки под каждый тип или использовать dynamic/деревья выражений.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.