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

Ограничение на интерфейс

Вопрос

Метод T Max<T>(T a, T b) должен сравнивать аргументы. Какое ограничение нужно?

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

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

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

Коротко

Правильный ответ: where T : IComparable<T. Чтобы вызвать a.CompareTo(b), компилятор должен знать, что у T есть этот метод: ограничение IComparable<T это гарантирует. struct и class говорят только о виде типа, new() о конструкторе.

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

  1. where T : IComparable<T>правильный ответ
  2. where T : struct
  3. where T : class
  4. where T : new()

Разбор

Чтобы вызвать a.CompareTo(b), компилятор должен знать, что у T есть этот метод: ограничение IComparable<T> это гарантирует. struct и class говорят только о виде типа, new() о конструкторе. С .NET 7 для чисел есть ещё обобщённая математика: where T : INumber<T>, и тогда можно писать a > b.

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

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