Junior — Middle
77
Можно ли установить ограничение на допустимые значения при использовании Generics в языке программирования?
Компании, где спрашивали
Элисофт
Ответ от нейросети
sobes.tech AI
В C# можно ограничить типы, которые могут использоваться в обобщениях (Generics), с помощью ограничений (constraints). Это позволяет задать требования к типу параметра, например, чтобы он был классом, реализовывал определённый интерфейс, имел конструктор без параметров и т.д.
Примеры ограничений:
where T : class— тип должен быть ссылочным.where T : struct— тип должен быть значимым (value type).where T : new()— тип должен иметь публичный конструктор без параметров.where T : SomeBaseClass— тип должен наследоваться от указанного класса.where T : ISomeInterface— тип должен реализовывать интерфейс.
Пример:
public class Repository<T> where T : IEntity, new()
{
public T CreateNew()
{
return new T(); // Можно вызвать конструктор без параметров
}
}
Таким образом, ограничение позволяет контролировать, какие типы можно использовать с обобщениями, обеспечивая безопасность и предсказуемость кода.