Как делегаты обеспечивают абстракцию - PullRequest
0 голосов
/ 12 марта 2019

Как мы можем использовать делегатов для абстракции? Мы также можем использовать интерфейсы для абстракции, так что лучше? Это с использованием интерфейсов или с использованием делегатов.

Простой практический пример поможет.

Thankyou.

Ответы [ 3 ]

0 голосов
/ 12 марта 2019

Чтобы частично ответить на вопрос, рассмотрите общий метод расширения Linq OrderBy, который задокументирован здесь . Можно использовать делегат, чтобы обеспечить отображение элементов последовательности на тип, который затем используется для правильного сравнения. Следовательно, фактическая сортировка отделена от порядка, который неявно задается посредством реализации типа результата. Используемый тип delagate позволяет более абстрактно реализовать алгоритм сортировки.

0 голосов
/ 12 марта 2019

Согласно Документам Microsoft о делегатах

способность ссылаться на метод в качестве параметра делает делегатов идеальными для определения методов обратного вызова.Например, ссылка на метод, который сравнивает два объекта, может быть передана в качестве аргумента алгоритму сортировки.Поскольку код сравнения находится в отдельной процедуре, алгоритм сортировки может быть записан более общим способом.

и интерфейс

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

Так что я думаю, ясно, что вы должны использовать интерфейс для абстракции.посмотрите ссылки на документы Microsoft для примеров.

0 голосов
/ 12 марта 2019

1) Запретить создание дополнительной функции enter image description here

2) События для предотвращения жесткого кода enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...