Выбор ответа Junior Дженерики обновлено
Ограничение new()
Вопрос
Что позволяет ограничение where T : new()?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Создавать экземпляры T через new T() внутри обобщённого кода. new() требует публичный конструктор без параметров и разрешает new T().
Варианты ответа
- Гарантирует, что
Tэто класс - Запрещает передавать абстрактные типы и интерфейсы, но не даёт создавать объекты
- Создавать экземпляры
Tчерезnew T()внутри обобщённого кодаправильный ответ - Позволяет вызывать любой конструктор
Tс параметрами
Разбор
new() требует публичный конструктор без параметров и разрешает new T(). Класс требует ограничение class. Абстрактные типы и интерфейсы действительно не пройдут, но смысл ограничения именно в создании объекта. Конструкторы с параметрами через ограничения не выразить, для этого используют фабрики Func<T> или Activator.CreateInstance.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Ещё по теме «Дженерики»
- Контравариантность Action<in T>
- Ковариантность IEnumerable<out T>
- default(T)
- Обобщённая математика .NET 7
- Слияние k отсортированных списков через PriorityQueue
- Обобщённый стек с минимумом за O(1)
- Ограничения where и что они разрешают
- Статический конструктор в дженерике