Выбор ответа Junior Дженерики обновлено

Ограничение new()

Вопрос

Что позволяет ограничение where T : new()?

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

Выберите вариант, и откроется разбор.

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

Коротко

Правильный ответ: Создавать экземпляры T через new T() внутри обобщённого кода. new() требует публичный конструктор без параметров и разрешает new T().

Варианты ответа

  1. Гарантирует, что T это класс
  2. Запрещает передавать абстрактные типы и интерфейсы, но не даёт создавать объекты
  3. Создавать экземпляры T через new T() внутри обобщённого кодаправильный ответ
  4. Позволяет вызывать любой конструктор T с параметрами

Разбор

new() требует публичный конструктор без параметров и разрешает new T(). Класс требует ограничение class. Абстрактные типы и интерфейсы действительно не пройдут, но смысл ограничения именно в создании объекта. Конструкторы с параметрами через ограничения не выразить, для этого используют фабрики Func<T> или Activator.CreateInstance.

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

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