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 и иметь конструктор без параметров.