Страницы

Поиск по вопросам

понедельник, 12 ноября 2018 г.

Полиморфизм в c#

Из википедии: Параметрический полиморфизм позволяет определять функцию или тип данных обобщённо, так что значения обрабатываются идентично вне зависимости от их типа.
В C# параметрический полиморфизм реализуется с помощью generic'ов или нет? Может кто объяснить?)


Ответ

Да, вы правы. Дженерики -- один из механизмов параметрического полиморфизма в C#. Например, вам нужно вывести число элементов коллекции. Все, что вам нужно от параметра функции -- свойство Count. При этом фактический тип параметра неважен. Соответственно вы можете написать этот метод так:
void PrintCountGeneric(T collection) where T : ICollection { Console.WriteLine(collection.Count); }
...
var list = new List() { 1, 2 }; PrintCountGeneric(list);
Еще есть вариант без использования дженериков:
void PrintCount(ICollection collection) { Console.WriteLine(collection.Count); }
...
var list = new List() { 1, 2 }; PrintCount(list);

Комментариев нет:

Отправить комментарий