Карточка 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 ошибок.