Зачем мне универсальный класс, если в методе я могу указать родительский класс?

Здравствуйте, зачем мне шаблоны, которые в основном нужны, чтобы предотвратить лишнюю перегрузку, но зачем, если в методе я могу указать родительский класс?
  • Вопрос задан
  • 115 просмотров
Решения вопроса 2
Nipheris
@Nipheris Куратор тега C#
Если под "универсальным классом" вы имеете в виду класс-дженерик, то почитайте про параметрический полиморфизм и полиморфизм через подтипы. Параметрический полиморфизм в контексте C# это про дженерики, полиморфизм через подтипы - это о вашем "указать родительский класс".

Это сильно разные механизмы, и чтобы понять разницу, попробуйте реализовать какой-нибудь List или Dictionary без использования дженериков, как предлагает вам Василий Банников , и как было в .NET 1.1 (о боги, это было как будто позавчера), до появления обобщённых типов. И увидите, как теряется типобезопасность и сколько нужно кастить туда-сюда.
Ответ написан
Комментировать
1. Не всегда можно указать родительский класс
2. Иногда переход к родительскому классу/интерфейсу не оптимален. Например если ты используешь структуры - будет происходить боксинг.
3. В некоторых случаях потребителю бы хотелось работать с конкретным типом, а не с базовым. Попробуй реализовать List без женериков.

PS: нет такого понятия, как "универсальный класс"
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы