Делегаты и интерфейсы в C#

Делегаты:

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

Интерфейсы:

  • Интерфейсы не выделяют новые объекты, поэтому их быстрее получить.
  • Интерфейсы быстрее для одноразовых приложений, так как вместо двух создается только один объект.
  • Если хорошо спроектированы, интерфейсы допускают использование общих (нетипизированных) приложений, которые быстрее, чем DynamicInvoke делегатов.
  • Если хорошо спроектированы, общие интерфейсы могут получить доступ к нетипизированному интерфейсу, который имеет одинаковые методы и параметры сигнатуры, только изменяя параметры типового типа по объекту.
  • Интерфейсы позволяют использовать разные возможности вызова (например, Convert и TryConvert).
  • Интерфейсы немного медленнее для вызова с правильно введенными параметрами.
  • Интерфейсы не поддерживают анонимную компиляцию.
  • Интерфейсы требуют создания всех типов, даже если необходим один метод.

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

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

Источник: http://www.csharpstar.com/delegates-vs-interfaces-in-csharp/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector