Путь разработчика    

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


Делегаты:

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

Интерфейсы:

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

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

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

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



Отзывы (через Facebook):

Оставить отзыв с помощью аккаунта FaceBook:

Отображать образцы форматов для разных локалей в C#

При запуске программы выполняется следующий код. Этот код сначала создает значения float, decimal и DateTime. Затем он перебирает объекты CultureInfo, возв...

07 12 2019 1:58:26

Получить использование памяти программы в C#

Код получает объект Process программы, а затем использует его свойства, чтобы узнать об использовании памяти. Источник: http://csharphelper.com/blog/2015/1...

06 12 2019 2:50:10

Среда разработки Intellij idea

IntelliJ IDEA — интегрированная среда разработки программного обеспечения на многих языках программирования от компании JetBrains. В 2001 году была выпущен...

05 12 2019 12:12:24

Изучаем C++ через программирование игр

Если вы хотите научиться программировать первоклассные игры, вам просrо необходимо изучить язык С++. Эrа книга поможет вам освоить разработку игр с самых а...

04 12 2019 1:37:10

Преобразование файлов doc в файлы docx в C#

В этом примере показано, как написать программу на C# для автоматического преобразования файлов doc в файлы docx. В предыдущей версии Windows, когда я дваж...

03 12 2019 13:32:27

Создайте библиотеку кнопок XAML в C#

В этом примере показано, как можно создать библиотеку кнопок XAML с возможностью повторного использования в WPF. Пример Создание шаблона кнопки WPF в C# ис...

02 12 2019 17:42:54


Parse error: syntax error, unexpected ',' in /home/users/9/9161484547/domains/flash-mx.ru/lessons/926.php on line 69