Sobes.tech
Junior — Middle

É possível estabelecer uma restrição aos valores permitidos ao usar Generics na linguagem de programação?

sobes.tech IA

Resposta da IA

В 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(); // Можно вызвать конструктор без параметров
    }
}

Таким образом, ограничение позволяет контролировать, какие типы можно использовать с обобщениями, обеспечивая безопасность и предсказуемость кода.