Sobes.tech
Back to questions
Junior — Middle
67

Существуют ли ограничения при определении собственного универсального шаблона (generic)?

Answer from AI

sobes.tech AI

При определении собственных универсальных шаблонов (generics) в C# существуют некоторые ограничения:

  • Типы параметров должны быть ссылочными, значимыми или иметь определённые ограничения (constraints), например, наследование от определённого класса, реализация интерфейса, наличие конструктора без параметров.
  • Нельзя использовать примитивные типы напрямую без ограничений, если требуется специфичная функциональность.
  • Нельзя создавать экземпляры типа параметра без ограничения new(), так как компилятор не знает, как его инициализировать.
  • Нельзя использовать операторы типа typeof(T) или is T без ограничений.

Пример ограничения:

public class Repository<T> where T : IEntity, new()
{
    public T CreateNew() => new T();
}

Здесь T должен реализовывать интерфейс IEntity и иметь конструктор без параметров.