TGViewer
C# | Вопросы собесов C# | Вопросы собесов @easy_c_sharp · 5.01K subscribers
Post #1677 1.1K
🤔 Возможно ли как-нибудь ограничить типы, которые пользователь будет передавать через шаблон?

Можно ограничить типы, которые передаются в шаблоны (generics), с помощью ключевого слова where. Это позволяет указать, какие типы подходят для использования, обеспечивая безопасность и предсказуемость кода. Вот основные виды ограничений:

🟠Класс или структура
where T : class — только классы.
where T : struct — только структуры.

🟠Интерфейс
Указание интерфейса, который должен реализовать тип:

   public class MyClass<T> where T : IDisposable { }


🟠Базовый класс
Указание, что тип должен быть наследником определённого класса:

   public class MyClass<T> where T : Exception { }


🟠Конструктор
Ограничение на наличие конструктора без параметров:

   public class MyClass<T> where T : new() { }


🟠Комбинированные ограничения
Можно объединять несколько условий:

   public class MyClass<T> where T : class, IDisposable, new() { }


Ставь 👍 и забирай 📚 Базу знаний
  • 👍 3
More from @easy_c_sharp
  1. Oct 18, 2026🤔 Какие объекты живут в нулевом поколении? В C# и .NET память управляется сборщиком мусор…
  2. Oct 17, 2026🤔 Что такое виртуальный метод? Виртуальный метод (virtual) — это метод, который можно пер…
  3. Oct 17, 2026🤔 Что такое медиатор? Это паттерн проектирования поведенческих шаблонов, который позволяе…
  4. Oct 16, 2026🤔 Как отменить Task? Используется CancellationToken: 1. Создаётся CancellationTokenSource…
  5. Oct 16, 2026🤔 Что такое .NET стандарт? .NET Standard — это спецификация API, которая определяет набор…
  6. Oct 15, 2026🤔 Что такое паттерн DDD? Это подход к разработке, фокусирующийся на модели домена и бизне…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →